如何获取调用AWS Lambda函数的用户的身份ID(由AWS Cognito登录)?我是否必须在Lambda函数上使用SDK来获取身份标识?
对于我们的AWS API端点,我们使用AWS_IAM授权并希望从Swagger UI进行调用.要成功拨打电话,必须有2个标题'授权'和'x-amz-date'.为了形成'授权',我们使用aws doc中的以下步骤.我们必须在每次通话授权时更改"x-amz-date".问题是:如何在Swagger中编写脚本来签署请求,每次请求发送到aws 之前都会运行?(我们知道在加载Swagger页面之前如何指定两个标题,但是在每次调用之前应该重新运行此过程).
提前致谢.
我一直坚持尝试将iOS与iOS一起使用2天.我从这里下载了示例项目:https://github.com/awslabs/aws-sdk-ios-samples
我完全按照步骤说,我用cocoapods链接所有库.
我还创建了一个存储桶,然后再按照如何获取ID的步骤在代码中进行更改,如下所示:
AWSCognitoCredentialsProvider *credentialsProvider = [AWSCognitoCredentialsProvider
credentialsWithRegionType:AWSRegionUSEast1
accountId:AWSAccountID
identityPoolId:CognitoPoolID
unauthRoleArn:CognitoRoleUnauth
authRoleArn:nil];
Run Code Online (Sandbox Code Playgroud)
所以基本上当我试图上传一些图像/文件时(在亚马逊使用S3存储服务的例子中,我收到一个错误:
2014-09-04 15:11:57.475 S3TransferManagerSample[5437:400b] AWSiOSSDKv2 [Error] AWSCredentialsProvider.m
line:356 | __40-[AWSCognitoCredentialsProvider refresh]_block_invoke299 | Unable to refresh.
Error is [Error Domain=com.amazonaws.AWSSTSErrorDomain Code=0 "The operation couldn’t be completed. (com.amazonaws.AWSSTSErrorDomain error 0.)"
UserInfo=0x14d17770 {Type=Sender, Message=Not authorized to perform sts:AssumeRoleWithWebIdentity, __text=(
"\n ",
"\n ",
"\n ",
"\n "
), Code=AccessDenied}]
Run Code Online (Sandbox Code Playgroud)
为了清楚起见,我已经创建了一个角色并为其提供了一个策略:AdministratorAccess并使用角色ARN来设置
unauthRoleArn:CognitoRoleUnauth
Run Code Online (Sandbox Code Playgroud)
我已阅读文档,似乎无法在任何地方找到问题.我觉得它与角色和赋予角色的政策有关.
我非常感谢有关如何入门或如何解决此问题的任何提示.
谢谢,如果你需要关于这个问题的更多细节,请随意评论,我会给予更多,因为这个问题有点冗长.
我正在使用S3TransferManager-Sample进行测试.我创建了Cognito并设置了IAM并最后更改了constants.swift文件.我没有上传但无法下载的问题.错误消息是:
下载失败:[错误域= com.amazonaws.AWSS3ErrorDomain代码= 1"操作无法完成.(com.amazonaws.AWSS3ErrorDomain错误1.)"UserInfo = 0x7f8cd658a5a0 {HostId = d4yLouhlYmGn4s1Zp54 + EOsZQEy2bVEGNs5XIa8pMxerJggANV/9Zb82c1QtF/5Hsn5KqYXGqdw =,消息=拒绝访问,代码= AccessDenied,RequestId = A1966393EAC3F15F}]
以下是我对该角色的设置:


我在S3存储桶中的设置:

当然,当我添加"Everyone"以允许"List"权限时,我可以下载.但是Cognito的目的是什么呢?谢谢