我不确定我是否正确理解了该过程,但我正在使用 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 凭证?
背景: 我每隔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)