如何使用 Boto3 在 Cloudformation 中获取 API 网关的预签名 URL?

无知

我想调用一个在 Cloudformation 中维护的 API 网关。我有 Cloudformation 堆栈名称 ( CF_STACK_NAME)、API 网关资源名称 ( API_GATEWAY_NAME) 和我需要承担的 IAM 角色的 Cloudformation 名称 ( API_ROLE_NAME)。

我可以通过以下方式访问我的 Cloudformation 堆栈,

cf_client = boto3.client('cloudformation')
api_role_resource = cf_client.describe_stack_resource(
       StackName=CF_STACK_NAME,
       LogicalResourceId=API_ROLE_NAME
)
api_resource = cf_client.describe_stack_resource(
       StackName=CF_STACK_NAME,
       LogicalResourceId=API_GATEWAY_NAME
)

通过阅读Switching to an IAM Role,我了解了如何获取角色的密钥,

sts_client = boto3.client('sts')
credentials = sts_client.assume_role(
    RoleArn='arn:aws:iam::{account_id}:role/{role_name}'.format(
        account_id=sts_client.get_caller_identity().get('Account'),
        role_name=api_role_resource['PhysicalResourceId']
    ),
    RoleSessionName="AssumeRoleSession1"
)['Credentials']

但是当我想调用API url时,

apigateway_client     = boto3.client('apigateway')
restapi_id = apigateway_client.get_rest_api(restApiId=api_logical_id)['id']
url = f'https://{restapi_id}.execute-api.{region}.amazonaws.com/{stage}/{api_query}

api_output = requests.get(url).json()

我明白了,

An error occurred (AccessDeniedException) when calling the GetRestApi operation: User: arn:aws:iam::0123456789:user/my-user is not authorized to perform: apigateway:GET on resource: arn:aws:apigateway:us-west-2::/restapis/ServerlessRestApi

如何使用此 CloudFormation 信息进行 API 调用?

约翰·汉利

我的猜测是您没有使用 STS 的新凭据。

您将需要使用新凭据使用以下代码创建 apigateway 客户端:

client = boto3.client(
       'apigateway',
        aws_access_key_id=credentials['Credentials']['AccessKeyId'],
        aws_secret_access_key=credentials['Credentials']['SecretAccessKey'],
        aws_session_token=credentials['Credentials']['SessionToken'])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 boto3 中创建/使用预签名 URL 时无法验证访问凭据

来自分类Dev

如何仅从boto3 cloudformation describe_stack API获取OutputKey?

来自分类Dev

如何使用Boto3创建预签名URL以从S3存储桶下载文件?

来自分类Dev

Boto3预签名URL,用于下载和上传

来自分类Dev

使用 boto3 创建带有自定义标头的 s3 预签名 url(放置)

来自分类Dev

使用API生成多个预签名的URL

来自分类Dev

boto3 中的预签名帖子与基于浏览器的帖子相同,带有 REST API 签名计算服务器端?

来自分类Dev

在Cloudformation的Lambda定义的Events属性中创建API端点的URL时,如何获取它

来自分类Dev

使用boto3的S3预签名帖子网址问题

来自分类Dev

如何使用Boto3获取公共IP

来自分类Dev

如何使用Boto3获取公共IP

来自分类Dev

使用AWS预签名URL获取JSON响应

来自分类Dev

使用AWS预签名URL获取JSON响应

来自分类Dev

如何使用angular或javascript中的预签名URL将文件上传到S3存储桶

来自分类常见问题

如何在Java AWS S3 SDK预签名URL中设置策略条件

来自分类Dev

如何使用Cloudformation为API网关启用Cloudwatch日志?

来自分类Dev

使用boto3 python库进行API调用以从AWS中的s3路径获取文件列表

来自分类Dev

仅能使用Boto3将CloudFormation模板部署到us-east-1

来自分类Dev

ETag 与 Amazon S3 预签名 URL 的使用

来自分类Dev

使用Boto3使用自定义日志记录信息为get_object创建一个预先签名的S3 URL?

来自分类Dev

使用Boto3以编程方式获取IAM用户的UserID

来自分类Dev

如何在Serverless的环境变量中获取API网关URL

来自分类Dev

如何在CloudFormation中将签名的S3 URL指定为模板?

来自分类Dev

如何在boto3中为executionRoleArn设置值?

来自分类Dev

如何在boto3中更改http方法

来自分类Dev

如何在boto3中设置SQS消息类?

来自分类Dev

如何使用Node.js和Axios将文件上传到AWS中的预签名URL?

来自分类Dev

在Boto3中使用SSM send_command

来自分类Dev

在Boto3中使用SSM send_command

Related 相关文章

  1. 1

    在 boto3 中创建/使用预签名 URL 时无法验证访问凭据

  2. 2

    如何仅从boto3 cloudformation describe_stack API获取OutputKey?

  3. 3

    如何使用Boto3创建预签名URL以从S3存储桶下载文件?

  4. 4

    Boto3预签名URL,用于下载和上传

  5. 5

    使用 boto3 创建带有自定义标头的 s3 预签名 url(放置)

  6. 6

    使用API生成多个预签名的URL

  7. 7

    boto3 中的预签名帖子与基于浏览器的帖子相同,带有 REST API 签名计算服务器端?

  8. 8

    在Cloudformation的Lambda定义的Events属性中创建API端点的URL时,如何获取它

  9. 9

    使用boto3的S3预签名帖子网址问题

  10. 10

    如何使用Boto3获取公共IP

  11. 11

    如何使用Boto3获取公共IP

  12. 12

    使用AWS预签名URL获取JSON响应

  13. 13

    使用AWS预签名URL获取JSON响应

  14. 14

    如何使用angular或javascript中的预签名URL将文件上传到S3存储桶

  15. 15

    如何在Java AWS S3 SDK预签名URL中设置策略条件

  16. 16

    如何使用Cloudformation为API网关启用Cloudwatch日志?

  17. 17

    使用boto3 python库进行API调用以从AWS中的s3路径获取文件列表

  18. 18

    仅能使用Boto3将CloudFormation模板部署到us-east-1

  19. 19

    ETag 与 Amazon S3 预签名 URL 的使用

  20. 20

    使用Boto3使用自定义日志记录信息为get_object创建一个预先签名的S3 URL?

  21. 21

    使用Boto3以编程方式获取IAM用户的UserID

  22. 22

    如何在Serverless的环境变量中获取API网关URL

  23. 23

    如何在CloudFormation中将签名的S3 URL指定为模板?

  24. 24

    如何在boto3中为executionRoleArn设置值?

  25. 25

    如何在boto3中更改http方法

  26. 26

    如何在boto3中设置SQS消息类?

  27. 27

    如何使用Node.js和Axios将文件上传到AWS中的预签名URL?

  28. 28

    在Boto3中使用SSM send_command

  29. 29

    在Boto3中使用SSM send_command

热门标签

归档