首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OIDC与AWS和AWS一起使用OIDC时出错

使用OIDC与AWS和AWS一起使用OIDC时出错
EN

Stack Overflow用户
提问于 2022-05-27 06:48:53
回答 2查看 530关注 0票数 0

我试图在aws上使用带有角色和web身份的OIDC。我跟随着https://support.atlassian.com/bitbucket-cloud/docs/deploy-on-aws-using-bitbucket-pipelines-openid-connect/的脚步

正如文章末尾所指出的,OIDC在我使用aws管道时可以工作,但是它不适用于导出和aws cli选项。

代码语言:javascript
复制
  default:
    - step:
        name: Connect to AWS using OIDC
        oidc: true
        script:
          - export AWS_REGION=$AWS_REGION
          - export AWS_ROLE_ARN=arn:aws:iam::1234567890:role/MyRole
          - export AWS_WEB_IDENTITY_TOKEN_FILE=$(pwd)/web-identity-token
          - echo $BITBUCKET_STEP_OIDC_TOKEN > $(pwd)/web-identity-token
          - printenv BITBUCKET_STEP_OIDC_TOKEN
          - printenv AWS_REGION
          - printenv AWS_ROLE_ARN
          - aws sts assume-role-with-web-identity --role-arn arn:aws:iam::1234567890:role/MyRole --role-session-name build-session --web-identity-token "$BITBUCKET_STEP_OIDC_TOKEN" --duration-seconds 1000

PrintEnv输出:

代码语言:javascript
复制
printenv AWS_REGION
us-east-2

printenv AWS_ROLE_ARN
arn:aws:iam::1234567890:role/MyRole

printenv BITBUCKET_STEP_OIDC_TOKEN
<nothing here>

错误:

代码语言:javascript
复制
An error occurred (AccessDenied) when calling the AssumeRoleWithWebIdentity operation: Not authorized to perform sts:AssumeRoleWithWebIdentity

然而,当我使用管道时,一切正常。

代码语言:javascript
复制
  - pipe: atlassian/aws-s3-deploy:1.1.0
    variables:
      AWS_DEFAULT_REGION: $AWS_REGION # Optional if already defined in the context or OIDC used.
      AWS_OIDC_ROLE_ARN: $AWS_OIDC_ROLE_ARN # Optional by default. Required for OpenID Connect (OIDC) authentication.
      S3_BUCKET: mygreat-bucket
      LOCAL_PATH: 'build'
      CACHE_CONTROL: 'max-age=86400'
EN

回答 2

Stack Overflow用户

发布于 2022-05-27 13:43:28

如果我正确理解,导出这些env变量就足够了,您不应该需要进一步的sts假设-角色与web标识命令。

只要试一试

代码语言:javascript
复制
aws sts get-caller-identity
票数 0
EN

Stack Overflow用户

发布于 2022-09-09 21:53:48

我无意中发现了同样的事情-- BitBucket管道可以直接使用AWS,但是脚本不工作。如果您检查特定的管道源代码,您会发现需要一些额外的步骤来承担角色- https://bitbucket.org/atlassian/aws-s3-deploy/src/master/pipe/pipe.sh#lines-35

因此,要使脚本部分与OIDC一起工作,您需要如下所示:

代码语言:javascript
复制
default:
- step:
    name: Connect to AWS using OIDC
    oidc: true
    script:
      - export AWS_REGION=$AWS_REGION
      - export AWS_ROLE_ARN=arn:aws:iam::1234567890:role/MyRole
      - export AWS_WEB_IDENTITY_TOKEN_FILE=$(pwd)/web-identity-token
      - echo $BITBUCKET_STEP_OIDC_TOKEN > $(pwd)/web-identity-token
      - aws configure set web_identity_token_file ${AWS_WEB_IDENTITY_TOKEN_FILE}
      - aws configure set role_arn ${AWS_ROLE_ARN}
      - unset AWS_ACCESS_KEY_ID
      - unset AWS_SECRET_ACCESS_KEY
      - printenv BITBUCKET_STEP_OIDC_TOKEN
      - printenv AWS_REGION
      - printenv AWS_ROLE_ARN
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72401495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档