Amazon EC2 インスタンスから Amazon S3 バケットに接続できないのはなぜですか?

最終更新日: 2020 年 9 月 8 日

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから Amazon Simple Storage Service (Amazon S3) バケットにアクセスできません。EC2 インスタンスから S3 バケットへの読み取り/書き込みアクセスを有効にするにはどうすればよいですか?

簡単な説明

EC2 インスタンスから S3 バケットに接続するには、以下の操作を実行します。

1.    AWS Identity and Access Management (IAM) プロファイルロールを作成し、Amazon S3 へのアクセスを許可するインスタンスにアタッチします。

2.    S3 バケットポリシーに、アクセスを拒否するポリシーがないことを確認します。

3.    EC2 インスタンスと Amazon S3 の間のネットワーク接続を確認します。

解決方法

Amazon S3 へのアクセスを許可する IAM インスタンスプロファイルを作成する

1.    IAM コンソールを開きます。

2.    [Roles] を選択し、[Create role] を選択します。

3.    [AWS Service] を選択し、[EC2] を選択します。

注意: 信頼されたエンティティとして EC2 を選択した状態でコンソールから IAM ロールを作成すると、ロール名と同じ名前の IAM インスタンスプロファイルが自動的に作成されます。ただし、ロールが AWS コマンドラインインターフェイス (AWS CLI) または API から作成された場合、インスタンスプロファイルは自動的に作成されません。詳細については、IAM ロールを作成しましたが、インスタンスを起動してもこのロールがドロップダウンリストに表示されません。どうすればよいですか? を参照してください。

4.    [Next: Permissions] を選択します。

5.    S3 バケットにアクセスするために最低限必要なアクセス許可を提供するカスタムポリシーを作成します。カスタムポリシーの作成手順については、「 Writing IAM policies: how to grant access to an Amazon S3 bucket (IAM ポリシーの作成:Amazon S3 バケットへのアクセスを許可する方法)」および「リソースへのアクセスの管理」を参照してください。

注: 最低限必要なアクセス許可でポリシーを作成することは、セキュリティのベストプラクティスです。ただし、すべての Amazon S3 バケットへの EC2 アクセスを許可するには、AmazonS3ReadOnlyAccess または AmazonS3FullAccess マネージド IAM ポリシーを使用します。

6.    [Next: Tags] を選択し、[Next: Review] を選択します。

7.    ロール名を入力してから、[Create role] を選択します。

IAM インスタンスプロファイルを EC2 インスタンスにアタッチする

1.    Amazon EC2 コンソールを開きます。

2.    [Instances] を選択します。

3.    IAM ロールをアタッチしたいインスタンスを選択します。

4.    [Actions]、[Instance Settings] 、[Attach/Replace IAM role] の順に選択します。

5.    先ほど作成した IAM ロールを選択し、[Apply]、[Close] の順に選択します。これで、IAM ロールが EC2 インスタンスに割り当てられます。

S3 バケットのアクセス許可を検証する

1.    Amazon S3 コンソールを開きます。

2.    ポリシーを確認する S3 バケットを選択します。

3.    [Permissions] を選択します。

4.    [バケットポリシー ] を選択します。

5.    Effect: Deny を含むステートメントを検索します。

6.    バケットポリシーで、バケットへの IAM インスタンスプロファイルのアクセスを拒否している Effect: Deny ステートメントを編集または削除します。ポリシーの編集手順については、IAM ポリシーの編集を参照してください。

EC2 インスタンスから Amazon S3 へのネットワーク接続を検証する

EC2 インスタンスが S3 エンドポイントに接続していることを確認します。

インスタンスは次のいずれかである必要があります。

パブリック IP アドレスを持つ EC2 インスタンス、およびデフォルトルートとしてインターネットゲートウェイを指定しているルートテーブルエントリ。
NAT ゲートウェイを経由するデフォルトルートを持つプライベート EC2 インスタンス。
ゲートウェイ VPC エンドポイントを使用して Amazon S3 に接続できるプライベート EC2 インスタンス。

S3 バケットへのアクセスを検証する

1.    AWS CLI をインストールします

2.    次のコマンドを実行して、S3 バケットへのアクセスを確認します。

aws s3 ls

注意: AWS Key Management Service (AWS KMS) キーで暗号化された S3 オブジェクトには、インスタンスにアタッチされた IAM ロールおよび KMS キーポリシーで kms:Decrypt アクションが許可されている必要があります。これにより、コピーとダウンロードが正常に動作します。詳細については、Amazon S3 から KMS で暗号化されたオブジェクトをダウンロードするときに AWS KMS キーを指定する必要がありますか? を参照してください。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術的なサポートが必要ですか?