2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS S3エンドポイント インターフェース型でローカルから直接S3にアクセスする

Posted at

ゲートウェイ型とインターフェース型の違い

S3エンドポイントには、ゲートウェイ型とインターフェース型があります。インターフェース型は PrivateLink とも呼ばれます。ゲートウェイ型ではエンドポイントを作成するとルートテーブルにルートが追加されます。一方インターフェース型では、エンドポイントのネットワークインターフェースが作成され、プライベートアドレスが割り当てられます。つまり、両者の大きな違いはエンドポイントを通る際にIPアドレスの変換が起こるかどうかだと認識しております。間違い等ございましたらご指摘頂けますと幸いです。

| Amazon S3 のゲートウェイエンドポイント| Amazon S3 のインターフェイスエンドポイント|
|---|---| |
| Amazon S3 パブリック IP アドレスを使用する| VPC のプライベート IP アドレスを使用する|
| オンプレミスからのアクセスできない| オンプレミスからアクセスできる|
| 別のリージョンからアクセスできない| 別の AWS リージョンからのアクセスできる|

S3エンドポイントを作成する

「エンドポイントの作成」をクリックします。

image.png

フィルターのテキスト部分に「s3」と入力し、エンターを押します。表示される2つのエンドポイントのうち、タイプが「Interface」となっているものを選択します。

image.png

VPC と AZ(アベイラビリティゾーン) を選択します。

image.png

セキュリティグループを選択します。ここでは VPC のデフォルトのセキュリティグループを選択しています。

image.png

ポリシーを設定します。ここではフルアクセスを選択しています。なお、このポリシーはエンドポイント作成後に変更することができます。

image.png

「エンドポイントの作成」をクリックします。

image.png

S3にアクセス

--endpoint-url には以下のDNS名のいずれも利用することができます。

image.png

PS C:\WINDOWS\system32> aws s3 --region ap-northeast-1 --endpoint-url https://bucket.vpc-endpoint-id-o16cnn3y.s3.ap-northeast-1.vpce.amazonaws.com cp C:\Users\user\Documents\test_upload.txt  s3://bucket-name/
upload: ..\..\Users\user\Documents\test_upload.txt to s3://bucket-name/test_upload.txt

ポリシーを設定

次にポリシーを設定してエンドポイントを経由しているか確認してみます。私の環境ではポリシーを設定してから反映されるまで少し時間がかかりました。

{
    "Id": "Policy1623456633533",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1623456631884",
            "Action": "s3:GetObject",
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::bucket-name/*",
            "Principal": "*"
        }
    ]
}

以下のようにオブジェクトをダウンロードすることができました。

PS C:\WINDOWS\system32> aws s3 --region ap-northeast-1 --endpoint-url https://bucket.vpc-endpoint-id-o16cnn3y.s3.ap-northeast-1.vpce.amazonaws.com cp s3://bucket-name/test_upload.txt C:\Users\user\Documents
download: s3://bucket-name/test_upload.txt to ..\..\Users\user\Documents\test_upload.txt

一方、アップロードは Access Denied になり失敗しました。

PS C:\WINDOWS\system32> aws s3 --region ap-northeast-1 --endpoint-url https://bucket.vpc-endpoint-id-o16cnn3y.s3.ap-northeast-1.vpce.amazonaws.com cp C:\Users\user\Documents\test_upload.txt s3://bucket-name/
upload failed: ..\..\Users\user\Documents\test_upload.txt to s3://bucket-name/test_upload.txt An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

エンドポイントを作成したユーザーでも使用するためには明示的な許可が必要だということがわかりました。

参考記事

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?