如何在Angular4中使用AWS SDK的ECS任务角色凭证

时间:2017-08-15 19:49:38

标签: angular aws-sdk amazon-ecs

我正在使用aws-sdk for JS / nodejs将Angular4中的文件上传到S3存储桶。

如果我在创建S3客户端对象时指定了我的凭据(accesskeyId,accesskey),上传工作正常,没有任何问题

问题

我正在尝试使用 ECSCredentials ,因为我不想在我的代码中的任何地方公开我的访问密钥。

我的应用程序在 ECS容器实例中运行,并使用 ECS任务执行。

我在IAM中创建了一个ECS任务角色,并通过容器定义中的任务角色将其附加到任务。 (我遵循了这个文档http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html

任务运行后,我可以登录容器(通过ssh)并通过“curl 169.254.170.2 $ AWS_CONTAINER_CREDENTIALS_RELATIVE_URI”检查权限是否正常工作

这样可以100%正常工作并输出我的凭据就像示例一样。

但是,我很难尝试使用aws-sdk。

在我的Angular4组件中,我添加了这样的SDK:

import { ECSCredentials, S3 } from 'aws-sdk';

我像这样创建我的S3对象:

private _s3ClientConfig: S3.ClientConfiguration;
private _s3: S3;

然后像这样创建实例:

this._s3ClientConfig = {
credentials: new ECSCredentials({
  httpOptions: { timeout: 5000 },
  maxRetries: 10,
  retryDelayOptions: { base: 200 }}),
region: this._awsConfig.s3BucketRegion,
sslEnabled: true
};

this._s3 = new S3(this._s3ClientConfig);

当我这样做时,我收到错误:

ECSCredentials is not a constructor

我也尝试省略“凭据”部分,然后我收到错误:

 Missing credentials in config

我还尝试将S3客户端选项创建为S3.ClientConfiguration类型或仅仅是普通对象,同样的错误仍然存​​在。

我在此处遵循了另一个堆栈溢出问题的说明:How to use ECS credentials with AWS JS SDK但是,没有运气,同样的问题和错误。

0 个答案:

没有答案