You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中通过Cognito IdentityPool获取未认证角色的临时AWS凭证?

使用Cognito未认证角色通过PowerShell访问AWS S3

要通过Cognito未认证角色访问S3,核心是获取临时IAM凭证,而非硬编码长期AccessKey/SecretKey。以下是具体实现步骤:

前提准备

  • 已创建Cognito身份池,并启用未认证访问
  • 身份池关联的未认证角色已配置对应S3权限(如s3:ListBucket、s3:GetObject等)
  • 本地已安装AWS Tools for PowerShell(可通过Install-Module -Name AWSPowerShell.NetCore安装)

实现代码

# 1. 设置目标AWS区域
Set-DefaultAWSRegion -Region "us-east-1"

# 2. 替换为你的Cognito身份池ID
$identityPoolId = "us-east-1:xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

# 3. 获取未认证用户的Cognito身份ID
$identityResponse = Get-CognitoIdentityId -IdentityPoolId $identityPoolId -UseUnauthenticatedCredentials
$identityId = $identityResponse.IdentityId

# 4. 获取临时IAM凭证
$credentialResponse = Get-CredentialsForIdentity -IdentityId $identityId
$tempCredentials = $credentialResponse.Credentials

# 5. 用临时凭证初始化S3客户端
$s3Client = New-AWSAmazonS3Client -AccessKey $tempCredentials.AccessKeyId `
                                 -SecretKey $tempCredentials.SecretAccessKey `
                                 -SessionToken $tempCredentials.SessionToken `
                                 -Region "us-east-1"

# 6. 示例操作:列出指定Bucket内的对象
Get-S3Object -BucketName "your-target-bucket" -Client $s3Client

关键说明

  • 临时凭证默认有效期为1小时,过期后需重新执行步骤3-5获取新凭证
  • 未认证角色的IAM策略需严格限定权限,避免过度授权,示例策略如下:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::your-target-bucket",
                "arn:aws:s3:::your-target-bucket/*"
            ]
        }
    ]
}
  • 若使用AWS Tools for PowerShell最新版本,也可直接通过Get-CredentialsForIdentity返回的凭证对象初始化客户端,无需手动拆分密钥

内容的提问来源于stack exchange,提问作者Josh Barton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:50:45