EC2インスタンスがイメージファイルを保存するためにアクセスできるように、S3バケットを起動する必要があります。 EC2インスタンスには読み取り/書き込み権限が必要です。 S3バケットをパブリックに利用可能にしたくありません。EC2インスタンスにアクセスさせたいだけです。
もう1つの落とし穴は、EC2インスタンスがOpsWorksによって管理されていることです。負荷/使用状況に応じて、異なるインスタンスを起動できます。 IPで制限する場合、EC2インスタンスが持っているIPを常に知っているとは限りません。 VPCで制限できますか?
S3バケットを静的なWebサイトホスティングに対して有効にする必要がありますか?これが機能するためには、バケット内のすべてのファイルもパブリックにする必要がありますか?
バケットをパブリックに読み取り可能にする必要も、ファイルをパブリックに読み取り可能にする必要もありません。バケットとその内容は非公開にできます。
IPアドレスに基づいてバケットへのアクセスを制限するのではなく、EC2インスタンスが使用しているIAMロールに基づいてバケットを制限します。
例えば:
{
"Version": "2012-10-17",
"Statement":[{
"Effect": "Allow",
"Action": "s3:*",
"Resource": ["arn:aws:s3:::my_bucket",
"arn:aws:s3:::my_bucket/*"]
}
]
}
例えば:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws:iam::111122223333:role/my-ec2-role"]
},
"Action": "s3:*",
"Resource": ["arn:aws:s3:::my_bucket",
"arn:aws:s3:::my_bucket/*"]
}
]
}
IAMの役割はあなたのためのソリューションです。
S3アクセス許可でロールを作成する必要があります。ロールなしでec2インスタンスを開始した場合、そのロールを割り当てて再構築する必要があります。
これは非常に簡単に行うことができます。次の手順に従ってください:
これが完了したら、AWSインスタンスに接続し、残りは次のCLIコマンドを介して行われます。
注意してください...ファイルの場所はローカルアドレスを指します。また、バケット名はバケットの名前です。注:これは、インスタンスとS3バケットが同じアカウントにある場合に可能です。乾杯。