アットウィキロゴ

[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
  • 「IAMロールの更新」をクリックします。

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はダミーです。
  • S3バケット一覧を確認します。
# 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
  • text.txtの内容を確認します。
# aws s3 cp s3://example-jp-s3-backup/test.txt -
※標準出力にストリーミングでコピーします。
test
  • テストファイルを削除します。
# 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/
  • ローカルテストファイルも削除します。
# rm -f /tmp/test.txt
最終更新:2026年04月01日 11:02