在云计算正在成为现代基础设施支柱的世界中,必须高效地访问 S3 等 AWS 服务。但假设您正在某个未安装 AWS CLI 的远程 UNIX 服务器上工作,并且您希望将文件发布到 S3 存储桶。本博客将引导您了解如何创建一个帮助程序脚本,通过使用 IAM 保护访问并自动获取 AWS 凭证来解决此问题。
您正在远程 UNIX 服务器上工作,该服务器将用于执行以下操作:
解决方案包括:
逐步实施
创建具有访问 S3 存储桶所需权限的 IAM 用户或角色。以下是 IAM 策略的示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:PutObject", "s3:GetObject"], "Resource": "arn:aws:s3:::your-bucket-name/*" } ] }
将 your-bucket-name 替换为您的 S3 存储桶的名称。
将此策略附加到您的 IAM 用户或角色。
部署模板:
使用 AWS 管理控制台或 AWS CLI 部署 CloudFormation 堆栈。例如:
aws cloudformation deploy --template-file template.yaml --stack-name S3AccessStack
检索凭证:
创建堆栈后,您可以检索导出的输出:
aws cloudformation 描述堆栈 --stack-name S3AccessStack
--query "Stacks[0].Outputs[?ExportName=='S3AccessKeyId'].OutputValue" --输出文本
同样,检索秘密访问密钥:
aws cloudformation 描述堆栈 --堆栈名称 S3AccessStack
--query "Stacks[0].Outputs[?ExportName=='S3SecretAccessKey'].OutputValue" --输出文本
该脚本实现了以下目标:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:PutObject", "s3:GetObject"], "Resource": "arn:aws:s3:::your-bucket-name/*" } ] }
将此脚本保存为 aws_helper.sh 并授予执行权限
每 30 天运行 ./aws_helper.sh update-credentials 以轮换密钥并更新凭证文件。
消除 AWS CLI 依赖性:
该脚本使用curl进行S3操作,确保与未安装AWS CLI的环境兼容。
提高安全性:
自动密钥轮换并安全地管理凭据。
自动化:
实现无缝和自动化的 S3 操作,减少手动错误。
可定制:
可以扩展以包含其他 S3 操作,例如删除或列出文件。
对于更大规模的自动化,请考虑将此脚本与:
集成
AWS SDK:用于更复杂的逻辑。
AWS CloudFormation:以代码形式管理基础设施。
AWS Secrets Manager:安全地管理凭证。
参考
有关以编程方式创建和管理 AWS 资源的文档。
此帮助程序脚本提供了一种轻量级且高效的解决方案,无需 AWS CLI 即可在远程服务器上执行 AWS S3 操作。通过利用 IAM、自动化凭证检索和轮换密钥,它增强了安全性和可靠性。尝试一下并调整它以满足您的特定需求!
以上是AWS 简化:在远程服务器上无需 CLI 即可实现自动化操作的详细内容。更多信息请关注PHP中文网其他相关文章!