プログラムでファイルを「Amazon S3」にアップロードする方法は、色々なサイトでも紹介されております。
しかし、その場合にAWSのIAMの設定やS3のバケットポリシーの設定が必要となり、それらについての記載が少ないと感じました。
今回は開発時の設定方法を記載します。
なお本番運用時はEC2などにロールを付与することが一般的となります。
そのためユーザーの作成は開発用として利用することを前提としています。
1. AWSのIAMの設定
開発用にアクセスキーを取得する方法を記述します。
あくまで開発用のため、上記にも記載したように本番運用時はIAMロールを使用することをお勧めします。
- AWSのコンソールにログインし、IAMの画面に移動します。
- まずは「AmazonS3FullAccess」のポリシーを付与したグループを作成します。
- 次にユーザーを作成を行い、先程作成したグループを付与します。
- ユーザーを作成して、作成したユーザーの「セキュリティ認証情報」のタブに移動します。
- 下にスクロールし「アクセスキーを作成」をクリックし、アクセスキーIDとシークレットアクセスキーを取得します。
- 「ローカルコード」を選択し「次へ」をクリックします。
- 任意の説明を入力し「アクセスキーを作成」をクリックします。
- アクセスキーIDとシークレットアクセスキーがメモするか、csvファイルをダウンロードして控えておきます。
- また後ほど設定する「S3」のバケットポリシーで使用するため、ユーザーの「ARN」を控えておきます。
このアクセスキーIDとシークレットアクセスキーをenvファイルなどに記載し、
Gitのコミットに含めないようにしてください。
2. S3のバケットポリシーの設定
S3では基本的にCloudFrontなどを通じてアクセスすることが一般的です。
セキュリティとして直接アップロードが可能となるケースを絞り込むために
S3のバケットポリシーを設定しておきましょう。
- S3のコンソールにログインし、バケットを選択します。
- バケットの「アクセス許可」タブに移動します。
- 「バケットポリシーエディター」の「編集」クリックします。
- 以下のようにポリシーを設定します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ユーザーID:user/ユーザー名"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::バケット名",
"arn:aws:s3:::バケット名/*"
]
}
]
}
これで作成したユーザーのアクセスキーIDとシークレットアクセスキーを使って、設定したS3にファイルをアップロードすることができるようになります。
ただ何度も言うように、本番運用時はIAMロールを使用することをお勧めします。
コメント
Comments are closed.