AWS IAMユーザーロールを使用しての背後にある動機は、AWSが自動的に各サービスコールのためのAWSキー/資格情報を処理することです。このアプローチは、Apache Camelの後ろで使用されています。Apache Camelは、資格情報を使用してデータ転送を安全に行う、つまりソースコード内に資格情報を格納しません。AWS S3バケットAPI呼び出し:
私が見つけた問題は、IAMツール内で作成された資格情報がaws cli内でのみ機能することです。
たとえば、私は(私の環境変数内でそれらの設定)IAMから自動生成された資格情報を使用してこれを正常に実行します。
aws s3 cp test.txt s3://x/test.txt
をしかし、私は内に同じ操作(同じ資格情報)を模倣しようとすると、 API呼び出し、私はこのエラーメッセージを与えています:
The AWS Access Key Id you provided does not exist in our records.
(Service: Amazon S3; Status Code: 403; Error Code: InvalidAccessKeyId;
Request ID: 07A4FCDCA2E82F9E)
さらに、(セキュリティキーIDとキーを作るすなわち)私のAWSアカウントのセキュリティ資格情報を使用して、私は前述のAPIの作業を取得することができます。したがって、APIは問題ではありません(私は2つのdiatic資格情報セットをテストしたと考えています)。
最後に、私のAWS IAMユーザーの役割はS3バケットへのフルアクセスを持つように設定され、S3バケット自体は、そのために許可するように設定されています。これが、私が潜在的な道に迷い始めたところです。
このすべてを知って、私はいくつかの研究を行い、同様の問題(1)(2)を持つ人々を見つけました。各ソースは問題を解決するためのさまざまなアイデアを提示しますが、いずれもApache Camelの私の使用例には当てはまりません。次のようにApacheのキャメル、私のコード例の私の使用の知識を
は次のとおりです。
String awsS3Connection = "aws-s3://x" + "?accessKey=" + accessId +
"&secretKey=" + accessKey;
from(awsS3Connection)
.to(importProcessingEndpoint);
私はあなたがこれについてのキャメルのサポートについてあなたが作ったのと同じ結論に向かっています。ラクダインターフェイス内でカスタム認証情報を渡すためのルールが実装されていないか不足しているかどうかを確認します。私が発見した追加の情報は、別の回答とあなたの答えの下にコメントとして掲載されます! –
最新のaws sdkはcamelと互換性がないため、資格情報の取得には適しているようですが、クライアントはCamelで動作しません。 –