クラウド コンピューティングが最新のインフラストラクチャのバックボーンになりつつある世界では、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 Cloudformationdeploy --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 として保存し、実行権限を付与します
./aws_helper.sh update-credentials を 30 日ごとに実行して、キーをローテーションし、認証情報ファイルを更新します。
AWS CLI の依存関係を排除します:
スクリプトは S3 操作にcurlを使用し、AWS CLIがインストールされていない環境との互換性を確保します。
セキュリティの向上:
キーのローテーションを自動化し、資格情報を安全に管理します。
自動化:
シームレスで自動化された S3 操作を可能にし、手動エラーを削減します。
カスタマイズ可能:
ファイルの削除や一覧表示など、追加の S3 操作を含めるように拡張できます。
大規模な自動化の場合は、このスクリプトを以下と統合することを検討してください。
AWS SDK: より複雑なロジック用。
AWS CloudFormation: インフラストラクチャをコードとして管理します。
AWS Secrets Manager: 認証情報を安全に管理します。
AWS リソースをプログラムで作成および管理するためのドキュメント。
このヘルパー スクリプトは、AWS CLI を使用せずにリモート サーバーで AWS S3 オペレーションを実行するための軽量で効率的なソリューションを提供します。 IAM を活用し、認証情報の取得を自動化し、キーをローテーションすることで、セキュリティと信頼性が強化されます。試してみて、特定のニーズに合わせて調整してください!
以上がAWS の簡略化: CLI を使用せずにリモート サーバーで操作を自動化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。