Jan*_*pan 5 amazon-ecs aws-sdk angular
我正在使用aws-sdk for JS / nodejs将Angular4中的文件上传到S3存储桶。
在上传工作正常,没有任何问题,如果我指定我的凭据(accesskeyId,ACCESSKEY)创建S3客户对象时。
我正在尝试使用ECSCredentials,因为我不想在代码的任何地方公开我的访问密钥。
我的应用程序正在ECS容器实例中运行,并通过ECS Task执行。
我在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';
Run Code Online (Sandbox Code Playgroud)
我像这样创建我的S3对象:
private _s3ClientConfig: S3.ClientConfiguration;
private _s3: S3;
Run Code Online (Sandbox Code Playgroud)
然后像这样创建实例:
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);
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我得到了错误:
ECSCredentials is not a constructor
Run Code Online (Sandbox Code Playgroud)
我也试过省略“凭证”部分,但是,我得到了错误:
Missing credentials in config
Run Code Online (Sandbox Code Playgroud)
我也尝试过将S3客户端选项创建为S3.ClientConfiguration类型或只是普通对象,仍然存在相同的错误。
我在这里遵循了另一个堆栈溢出问题的说明:如何将ECS凭证与AWS JS SDK结合使用,但是没有运气,同样存在问题和错误。