0

EC2 タイプのコンテナー インスタンスを使用して AWS ECS クラスターをセットアップしました。タスク定義には、特定のシークレット名に対応する値で指定された「SECRETS」環境変数があります。タスク定義は awsvpc ネットワーク モードを使用します。

コード (.net) からシークレット値にアクセスするには、次のコード ( aws スニペットから) が使用されます。

IAmazonSecretsManager client = new AmazonSecretsManagerClient(region);
GetSecretValueRequest request = new GetSecretValueRequest
{
  SecretId = secretName,
  VersionStage = "AWSCURRENT" // VersionStage defaults to AWSCURRENT if unspecified.
};
GetSecretValueResponse response = Task.Run(async () => await client.GetSecretValueAsync(request)).Result;

これは、Fargateインスタンス タイプで完全に機能します。EC2コンテナ インスタンスに切り替えると、 GetSecretValueAsync() が AggregateException : TaskCanceledExceptionで失敗します。

コンテナーの内部からIAM ロールの資格情報を取得しようとしましたが、成功しました:

curl 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

また、取得した資格情報を直接指定しようとしましたが、うまくいきませんでした:

AmazonSecretsManagerClient(awsAccessKeyId, awsSecretAccessKey, region)

さらに、コンテナ内で aws cli をベイクしようとしましたが、内部から試してみましたがaws secretsmanager、応答なしでハングしますaws iam get-useraws sts get-caller-identityタスク実行ロールへの完全な管理者アクセス権を付与しましたが、まだ成功していません。EC2 コンテナー インスタンスからはシークレットを取得できますが、マウントされたコンテナーからは取得できません。

4

1 に答える 1