- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经在 EC2 上的 ubuntu 终端上执行了 Python 脚本,并且运行良好。现在我在 Azure Devops 管道中运行它,但 python 中的假定角色给出了此错误:似乎无法在 python 脚本中正确编写假定角色。与已经是主体的 Azure Pipeline 角色具有信任关系的角色。有什么帮助吗?
Traceback (most recent call last):
File "/home/ubuntu/azp/_work/1/s/infra/step_function.py", line 16, in <module>
assumed_role_object = sts_client.assume_role (
File "/opt/hostedtoolcache/Python/3.8.12/x64/lib/python3.8/site-packages/botocore/client.py", line 395, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/opt/hostedtoolcache/Python/3.8.12/x64/lib/python3.8/site-packages/botocore/client.py", line 725, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:sts::xxxxxxxxxxxxx:assumed-role/ServiceRoleForsampleAzurePipelines/i-0dabf23 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::xxxxxxxxxx:assumed-role/sample-Pipeline-Role
##[error]The process '/opt/hostedtoolcache/Python/3.8.12/x64/bin/python' failed with exit code 1
代码:Python 脚本
import os
from datetime import datetime
from typing import Tuple
import time
from time import sleep
import boto3
import json
from botocore.exceptions import ClientError
sts_client = boto3.client('sts')
assumed_role_object = sts_client.assume_role (
RoleArn = 'arn:aws:iam::xxxxxxxxx:assumed-role/sample-Pipeline-Role',
RoleSessionName = 'sample-Pipeline-Role'
)
iam_client = boto3.client('iam',
aws_access_key_id=assumed_role_object['Credentials']['AccessKeyId'],
aws_secret_access_key=assumed_role_object['Credentials']['SecretAccessKey'],
aws_session_token=assumed_role_object['Credentials']['SessionToken']
)
sf_client = boto3.client('stepfunctions', region_name="us-west-2")
sf_output = sf_client.start_execution (
stateMachineArn = 'arn:aws:states:us-west-2:xxxxxxxx:stateMachine:samplesPipelineOrchestration-LOs7dddd',
name = 'samplesPipelineOrchestration-LOs7dddd',
input = json.dumps({})
)
while True:
time.sleep(15)
sf_response = sf_client.describe_execution(executionArn=sf_output['executionArn'])
step_status = sf_response['status']
print("%s: %s" % ("> Status...", step_status))
if step_status == 'RUNNING':
continue
elif step_status == 'FAILED':
raise Exception("%s: %s" % ("! ERROR ! Execution FAILED: ", sf_response))
else: # SUCCEEDED
break
print(step_status)
print (f'##vso[task.setvariable variable=step_status]{step_status}')
代码:管道脚本:
trigger:
none
variables:
- group: aws_creds_sample
pool:
name: AWS Ubuntu 2004
jobs:
- job: determine_the_stepfunction_status
steps:
- task: AWSAssumeRole@1
displayName: 'Login to AWS'
inputs:
RoleArn: 'arn:aws:iam::$(AWS_ACCOUNT_ID):role/sample-Pipeline-Role'
SessionName: 'sample-Pipeline-Role'
ConfigureAWSCLIEnvironmentVariables: true
- task: UsePythonVersion@0
inputs:
versionSpec: '3.8'
- script: python -m pip install --upgrade pip boto3 setuptools sqlalchemy snowflake.sqlalchemy
displayName: 'Install python tools'
- task: PythonScript@0
env:
STEP_STATUS: $(step_status)
inputs:
scriptSource: 'filePath'
scriptPath: 'infra/step_function.py'# Required when scriptSource == filePath
arguments: --environment $(ENVIRONMENT)
failOnStderr: false
最佳答案
导致此错误消息的第一个原因是对将要承担的角色的“可信关系”配置不正确。
当不满足具有 MFA 的可信关系中的附加条件时,您将收到此错误:
"Condition": {"Bool": {"aws:MultiFactorAuthPresent": true}}
要允许帐户(即使相同)承担该角色,您还必须更改该角色的信任关系。
关于python - 假定角色 python 错误无权执行:sts:AssumeRole 对资源:arn:aws:iam::xxxxxxxxx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71365606/
我试图在我的 PHP 程序中使用 AWS sts 调用 AssumeRole 函数,因为我想创建临时凭证以允许用户为 AWS 存储桶创建对象。 下面是我调用 PHP 的函数: $sts = Sts
我已经运行了以下代码段。我对 aws 的调用工作正常,但现在我不得不转换角色,它遇到了问题,使它生效,因为它似乎我仍然停留在原来的角色。 public void awsAssumeRoleUs
我有一个 cloudformation 模板,它创建 lambda 函数以及该 lambda 函数的角色。我尝试假设 lambda 函数中的角色,但不断收到错误: An error occurred
我正在尝试使用新的 DynamoDB BatchResolvers 写入 AppSync 解析器中的两个 DynamoDB 表(目前使用 Lambda 函数来执行此操作)。但是,在查看 CloudWa
我在 iOS AWS sdk 中使用“AssumeRole”api 来生成临时安全凭证。任何人都可以告诉这个步骤或为此提供示例应用程序吗? TSC = [[AmazonSecurityTokenSe
我正在尝试执行包含以下资源的 cloudformation 堆栈: 代码构建项目 Codepipeline 管道 所需角色 尝试执行堆栈时,失败并出现以下错误: arn:aws:iam::ACCOUN
我在 中使用以下 IAM 角色创建了一个 lambda 函数( lambda-get-details )账号-A 角色名称 : lambda 角色 { "Version": "2012-10-
我正在尝试使用云形成堆栈模板创建代码管道资源,该管道用于跨帐户中的 lamda 部署。 通过云形成堆栈创建代码管道时,我遇到以下错误 arn:aws:iam::{AccountA}:role/test
我在这里做错了什么?如果我使用,我可以通过 aws cli 和 boto 担任角色: boto3.setup_default_session(profile_name="ROLE_TO_ASSUME"
调用 STS 的 assume role 方法时出现错误。它表示用户无权对资源 xxx 执行 sts:AsumeRole。 我做了以下事情: 我创建了一个角色来访问 S3 存储桶。 我对策略模拟器进行
我想向现有用户颁发临时凭证,允许他们访问 AWS 管理控制台,方法是向他们提供使用这些临时凭证创建的 URL。 我正在关注通过 AWS 文档给出的书面示例:Example Code Using IAM
我正在尝试生成临时凭据访问 key 和 secret key 。我用过 AssumeRole .描述说它生成一个访问 key 和 secret key 。但是GetSessionTokenResult
我试图以这样一种方式使用 AssumeRole,以便我遍历多个帐户并检索这些帐户的 Assets 。我已经做到了这一点: import boto3 stsclient = boto3.client('
这个 AWS 角色究竟是做什么的? 最相关的位似乎是:"Action": "sts:AssumeRole",和"Service": "ec2.amazonaws.com" 完整的角色在这里: reso
几天来,我一直无法弄清楚为什么一个 AWS 角色无权在另一个角色上执行 AssumeRole。在本例中,我有一个带有 AWS CodeCommit 的开发帐户和一个带有 CodePipeline 的工
我有一个 CloudFormation 堆栈,可以创建多个 IAM 角色。我有一个听起来有些不寻常的要求,即在角色的 AssumeRole 策略中包含一个声明,以防止角色自行承担。角色名称是使用 Fn
我是 AWS iOS SDK 的新手。我正在尝试使用来自 iPhone 应用程序的 "assumeRole" api 生成临时安全凭证。我在我的项目中添加了 AWSSecurityTokenServi
我想将我的代码部署到 EC2 实例,但我不想加入 AWS Key 和 Secret。 AWS 提供 IAM 服务,允许我为我的 EC2 实例分配一个角色,这将允许这些实例使用临时 key 进行访问。
我是 aws 的新手。我想为 aws 调用生成临时凭证。为此,我使用了 Making Requests Using IAM User Temporary Credentials - AWS SDK f
我正在尝试计算 AWS CloudFormation 模板的逻辑流程,该模板将承担一个 IAM 角色,可以从另一个 AWS 账户的 S3 存储桶中提取文件。 到目前为止我所拥有的是: 账户A有一个角色
我是一名优秀的程序员,十分优秀!