開発アプリと本番アプリが異なるキー ID とシークレットで異なるバケットにアクセスできるようにしたい場合、それは可能ですか? または、別の AWS アカウントを作成する必要がありますか?
周りを見回しましたが、有用なものは見つかりませんでした。理想的には、1 つの AWS アカウントに複数のバケットがあり、それらのバケットへのアクセスに異なるキー ID とシークレットを使用できるとよいでしょう。
開発アプリと本番アプリが異なるキー ID とシークレットで異なるバケットにアクセスできるようにしたい場合、それは可能ですか? または、別の AWS アカウントを作成する必要がありますか?
周りを見回しましたが、有用なものは見つかりませんでした。理想的には、1 つの AWS アカウントに複数のバケットがあり、それらのバケットへのアクセスに異なるキー ID とシークレットを使用できるとよいでしょう。
ジョンが言ったように、アプリにクレデンシャルを取得する限り、サーバーにコピーする個別のYAMLファイルを使用するか、(herokuで)環境変数を使用することができます。
ただし、複数のAWSアカウントは必要ありません。iamを使用して、アカウント内に独自のアクセスキー/シークレットキーを持つ追加のユーザーを作成し、適切なアクセス許可を付与できます。たとえば、S3バケットにのみアクセスでき、他には何もできないアカウントを作成できます。インスタンスにキーを保存する場合は、アカウントの「マスター」アクセスキーを使用するのではなく、このルートを使用することを強くお勧めします(これにより、AWSアカウントへの無制限のアクセスが可能になります)
これらのユーザーは、IAM APIを介して作成/構成するか、AmazonコンソールでGUIを使用できます。
In your config directory create a file called s3.yml, Inside put:
development:
bucket: development_bucket_name
access_key_id: development_amazon_key
secret_access_key: development_secret_key
create a similar file (s3.yml) for production.
production: bucket: production_bucket_name access_key_id: production_amazon_key secret_access_key: production_secret_key
Do not check the file into source control. Instead place the production one on the server in the config directory for development just leave it in config locally.
In environment/development.rb and production.rb
S3_CONFIG = YAML.load_file Rails.root.join("config/s3.yml")
Wherever you are explicitly are calling bucket_name, amazon_key, secret_key instead use
S3_CONFIG[Rails.env]["bucket"], etc