Sho*_*orn 6 amazon-web-services aws-codebuild
我目前正在成功使用codebuild进行简单的构建任务(在非vpc配置中).
但是现在我正在尝试运行一个读取SSM参数值的构建任务,并且它失败了,因为它无法加载任何凭据,明显的原因是:
com.amazonaws.auth.InstanceProfileCredentialsProvider@5754b242: Unable to load credentials from service endpoint
Run Code Online (Sandbox Code Playgroud)
我分配给codebuild项目的IAM服务角色确实拥有ssm:GetParameters我正在尝试读取的参数的权限(如果这是问题,我希望看到一条unauthorized消息,而不是unable to load credentials).
我正在使用Java SDK进行SSM GetParameter调用,我已经确认从EC2实例运行时可以从SSM参数读取,所以我很确定这里的问题是Codebuild.
为了进一步诊断问题,我尝试添加构建命令来curl对照AWS实例元数据地址:
curl 169.254.169.254/latest/meta-data/iam/info
Run Code Online (Sandbox Code Playgroud)
它不是像普通的EC2环境那样返回实例元数据,而是超时.
因此,问题的根源似乎是代码构建环境不能与AWS元数据查找地址一起使用,这会导致AWS提供商链无法查找凭据.
如何从codebuild读取我的SSM参数(没有硬编码或使用SDK凭据的环境变量)?
请问您为什么不使用内置方法AWS CodeBuild?您可以SSM通过AWS CodeBuild项目的构建规范获取参数.在这种情况下,通过Java SDK的附加调用已过时.
version: 0.2
env:
parameter-store:
key: "value"
key: "value"
phases:
build:
commands:
- command
- command
Run Code Online (Sandbox Code Playgroud)
parameter-store:如果指定了env,则需要,并且您要检索存储在Amazon EC2 Systems Manager参数存储中的自定义环境变量.包含键/值标量的映射,其中每个映射表示存储在Amazon EC2 Systems Manager参数存储中的单个自定义环境变量.key是您稍后将在构建命令中用于引用此自定义环境变量的名称,value是存储在Amazon EC2 Systems Manager参数存储中的自定义环境变量的名称.
有关更多信息,请查看AWS CodeBuild的构建规范参考
| 归档时间: |
|
| 查看次数: |
2252 次 |
| 最近记录: |