小编App*_*ins的帖子

CognitoIdentityCredentials 不提供访问权限

我不确定我是否正确理解了该过程,但我正在使用 Cognito 用户池并进行身份验证。我按预期收到了我的代币。我试图根据文档调用 CognitoIdentityCredentials作为我的 onSuccess 身份验证流程的一部分。

AWS.config.update({
    credentials: new AWS.CognitoIdentityCredentials({
        IdentityPoolId: IdentityPoolId,
    }),
    region: 'us-east-1'
});
Run Code Online (Sandbox Code Playgroud)

我已将 IAM 角色分配给我的 Cognito 身份池,并且一切看起来都已正确配置。但是,我没有收到任何 AWS 凭证。

文档指出:

默认情况下,此提供商使用 AWS.CognitoIdentity.getCredentialsForIdentity() 服务操作获取凭证,该操作需要 IdentityId 或 IdentityPoolId(Amazon Cognito 身份池 ID),用于调用 AWS.CognitoIdentity.getId() 来获取 IdentityId 。

我是否需要手动调用 AWS.CognitoIdentity.getId() 来获取 AWS 凭证?

amazon-web-services amazon-cognito

3
推荐指数
1
解决办法
4959
查看次数

在代码中考虑Lambda热启动?

背景: 我每隔15分钟调用一个特定的Lambda函数来启动我的EC2实例.这通过查询标记的值来工作,如果该值与当前时间匹配,则将实例添加到要启动的实例列表中.

问题:然而,该功能仅在每四个小时工作一次,因为它经常被调用而保持"温暖".虽然函数是热的,但我在当前时间所拥有的变量 - 调用的时间 - 在温暖的环境中保持不变,并且永远不会更新到当前的,实际的,真正实际的实时时间.见下面的代码.

# This lambda script start EC2 instances

import boto3
import logging
from datetime import datetime, time

ec = boto3.resource('ec2')

startup = datetime.now().strftime('%H%M')
now = int(startup)
minutes = [now-5,now-4,now-3,now-2,now-1,now]
logger = logging.getLogger()
logger.setLevel(logging.ERROR)

print 'The current time is: %s' % (startup)

def lambda_handler(event, context):
    for min in minutes:
        wave = ec.instances.filter(
            Filters=[
                {'Name': 'instance-state-name', 'Values': ['stopped']},
                {'Name': 'tag:Autostop', 'Values': ['%d' % (min)]}
            ]
        )
        for i in wave:
            iid = (i.instance_id)
            for t …
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services aws-lambda

1
推荐指数
1
解决办法
236
查看次数