[AWS] EC2からS3バックアップを行うためのIAMロール設定
EC2インスタンスにIAMロールを割り当て、S3バケットにバックアップを取得する設定を行います。
なお、すでにS3バケットは作成済みとします。
1. 許可ポリシーの作成
- IAMサービスを開きます。
- 左側のローカルメニューより「ポリシー」をクリックします。
- 「ポリシーの作成」ボタンをクリックします。
(1) アクセス許可を指定
- ポリシーエディタ「JSON」を選択します。
- JSONでポリシーを入力します。
※「"Resource": "arn:aws:s3:::example-jp-s3-backup"」で実際のバケット名を入力します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListAndGetBucketInfo",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::example-jp-s3-backup"
},
{
"Sid": "AllowObjectOperationsInBucket",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:GetObjectTagging",
"s3:PutObjectTagging",
"s3:AbortMultipartUpload",
"s3:ListBucketMultipartUploads",
"s3:ListMultipartUploadParts"
],
"Resource": "arn:aws:s3:::example-jp-s3-backup/*"
}
]
}
(2) 確認して作成
| ポリシー名 |
S3BackupObjectAccessPolicy |
| 説明 |
Policies for performing object operations in an S3 bucket from EC2. |
2. IAMロールの作成
- 左側のローカルメニューより「ロール」をクリックします。
- 「ロールを作成」ボタンをクリックします。
(1) 信頼されたエンティティを選択
| 信頼されたエンティティタイプ |
AWSのサービス |
| ユースケース |
EC2 |
(2) 許可を追加
許可ポリシーをアタッチします。
- 検索欄に「S3BackupObjectAccessPolicy」を入力して検索。
- 「S3BackupObjectAccessPolicy」にチェックを入れます。
- 「次へ」をクリックします。
(3) ロールの詳細
| ロール名 |
EC2-S3-Backup-Role |
| 説明 |
A role for accessing an S3 backup bucket from EC2. |
- 「信頼ポリシー」が以下のようになっているか確認します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "EC2AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
※EC2用のロールは、「Principal.Service」が「ec2.amazonaws.com」、「Action」が 「sts:AssumeRole」であることが基本です。
3. ECへのIAMロールの割り当て
EC2にIAMロールを割り当てます。
- 「EC2」サービスを開きます。
- 左側のローカルメニューで「インスタンス」をクリックします。
- 対象のインスタンスを選択して、上部メニューの「アクション」→「セキュリティ」→「IAMロールを変更」を実行します。
- IAMロールリストから「EC2-S3-Backup-Role」を選択します。
| IAMロール |
EC2-S3-Backup-Role |
AWS の公式手順でも、EC2 コンソールから Instances → 対象インスタンス選択 → Actions → Security → Modify IAM role の順に進み、IAM インスタンスプロファイルを選択して更新します。
4. EC2での動作確認
- 「EC2」にログインします。
- 現在の認証情報を確認します。
# aws sts get-caller-identity
{
"UserId": "ABOC1DE2F3GHIJKLMNOPQ:i-012f34a5678b9bb0e",
"Account": "123456789012",
"Arn": "arn:aws:sts::123456789012:assumed-role/EC2-S3-Backup-Role/i-012f34a5678b9bb0e"
}
※UserID、Account、Arnはダミーです。
# aws s3 ls s3://example-jp-s3-backup/
バケット内の一覧が表示されればOKです。
echo "test" > /tmp/test.txt
aws s3 cp /tmp/test.txt s3://example-jp-s3-backup/test.txt
upload: ../../../../tmp/test.txt to s3://example-jp-s3-backup/test.txt
- S3バケットにファイルがアップされていることを確認します。
# aws s3 ls s3://example-jp-s3-backup/
2026-03-30 10:37:28 5 test.txt
# aws s3 cp s3://example-jp-s3-backup/test.txt -
※標準出力にストリーミングでコピーします。
# aws s3 rm s3://example-jp-s3-backup/test.txt
delete: s3://example-jp-s3-backup/test.txt
# aws s3 ls s3://example-jp-s3-backup/
最終更新:2026年04月01日 11:02