【问题标题】:AWS JS SDK: How do I access GameLift data from a subaccount / another role using the root IAM account?AWS JS SDK:如何使用根 IAM 账户从子账户/另一个角色访问 GameLift 数据?
【发布时间】:2021-03-15 05:20:13
【问题描述】:

我对术语不太熟悉,所以请多多包涵。

我正在使用 react 开发一个 CMS 网站。我们已经通过 AWS Cognito 登录,并且我们曾经有一个显示 GameFleet 数据的页面。

但是,别名和舰队已移至子账户:

因此 GameFleet 页面是空的。

我最初通过为 DevRole 子帐户创建 IdentityPool(和角色)来克服这个问题,因为 CMS 通过以下代码检索 GameFleet 数据:

componentDidMount() {
    AWS.config.region = REGION;
        AWS.config.credentials = new AWS.CognitoIdentityCredentials({
            IdentityPoolId: IDENTITY_POOL_ID // <--- Changed this to new IdentityPoolId
    });
    
    AWS.config.credentials.get(function(err) {
        if (err) console.log(err);
        else console.log(AWS.config.credentials);
    });

    await this.requestGameLiftData();
};

requestGameLiftData = async () => {
    const gamelift = new AWS.GameLift();
    try {
        const aliasData = await new Promise((resolve, reject) => {
            gamelift.listAliases({}, function(err, data) {
                if (err) { reject("Aliases failed");}
                else { resolve(data); }
            });
        });
    } catch (error) {
        console.log(error);
    }
};

但现在的问题是有一个新的子账户,我无权访问,而且我可以预见可能会创建新的子账户,但它没有我的方法所需的 IdentityPoolId。

我被告知应该可以从根帐户访问子帐户 GameLift 数据,但我不确定如何。我一直在查看主帐户下的 IAM 页面,但那里似乎没有任何可以指向子帐户的内容。

我错过了什么吗?

【问题讨论】:

    标签: reactjs amazon-web-services aws-sdk-js


    【解决方案1】:

    您需要在此处使用 AWS Assume roles 功能,您的主账户可以使用该功能承担辅助账户的角色并获取子账户的临时凭证,该凭证可用于从主账户中提取子账户中的数据。

    https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html

    【讨论】:

      猜你喜欢
      • 2018-08-20
      • 1970-01-01
      • 2017-03-16
      • 2015-07-11
      • 2019-09-13
      • 2016-02-27
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多