我想向现有用户发布临时凭证,以允许他们访问AWS管理控制台,方法是为他们提供使用这些临时凭证创建的URL.
我正在关注通过AWS文档给出的书面示例:使用IAM查询API的示例代码
我编写了以下代码,在执行时不会出现任何错误,并且似乎返回会话令牌,这样我就可以正确地形成一个URL来登录.
以下是返回会话令牌和后续URL的代码:
$accessKeyId = 'accesskeyId'
$secretAccessKey = 'secretaccessKey'
$region = 'us-east-1'
Set-AWSCredentials -AccessKey $accessKeyId -SecretKey $secretAccessKey
$role = Use-STSRole -RoleSessionName "testSTS" -RoleArn "arn:aws:iam::1234567890:role/adminAccess" -DurationInSeconds 900
$jsonSession = @"
{
"sessionId": $([string]::Format("{0}", $role.Credentials.AccessKeyId)),
"sessionKey": $([string]::Format("{0}", $role.Credentials.SecretAccessKey)),
"sessionToken": $([string]::Format("{0}", $role.Credentials.SessionToken))
}
"@
Add-Type -AssemblyName System.Web
$Encode = [System.Web.HttpUtility]::UrlEncode($jsonSession)
$url = $([string]::Format("https://signin.aws.amazon.com/federation?Action=getSigninToken&Session={0}", $Encode))
$payload = Invoke-WebRequest -Uri $url | ConvertFrom-Json
$issuer = [System.Web.HttpUtility]::UrlEncode("https://1234567890.signin.aws.amazon.com")
$destination = [System.Web.HttpUtility]::UrlEncode("https://console.aws.amazon.com")
$signintoken = [System.Web.HttpUtility]::UrlEncode($payload.SigninToken)
$signInUrl = $([string]::Format("https://signin.aws.amazon.com/federation?Action=login&Issuer={0}&Destination={1}&SigninToken={2}", $issuer, $destination, $signintoken))
write-host $signInUrl
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我在网络浏览器中访问网址时,我收到以下错误"亚马逊网络服务登录:您的登录链接中的凭据无效.请与您的管理员联系."
这是我回复给我的网址的样子,显然我出于安全原因更改了accountid和real会话令牌:
我正在尝试使用Amazon EC2 Run Command功能,基本上它说它找不到任何实例.
我阅读了所有文档,并按照我在这个相对较新的功能上找到的所有步骤进行操作,但我无法让它在我的生活中工作.
这是信息:
我转到"EC2 - >命令 - >命令历史 - >运行命令"我单击"AWS-RunShellScript"命令文档的单选框我单击"选择实例"下拉按钮,并显示"未找到实例这个地区"如下图1所示.
我点击"我的实例在哪里?" 超链接,它带我到AWS文档显示在这里:" SSM运行命令疑难解答 "
第一个疑难解答建议是确保满足先决条件,并提供此处显示的另一个超链接:" SSM Run Command Prerequisites "
先决条件:
我遵循AWS文档为EC2运行命令访问创建了Amazon EC2实例角色,并创建了具有正确运行命令访问权限的IAM用户.此处显示了文档:委派对SSM Run Command的访问权限
我使用本地计算机上的Amazon CLI运行以下命令,如故障排除文档中所示:
aws ssm describe-instance-information --instance-information-filter-list key=InstanceIds,valueSet=instance-ID
Run Code Online (Sandbox Code Playgroud)
该命令不返回任何信息:
{"InstanceInformationList":[]}
更新1:
我确实在以下地方发现了以下错误和警告,并且花了最后两个小时尝试进行故障排除.我安装并重新安装了Ec2Config服务.我检查了所有的Ec2Config文件.我检查了169.254地址,并且存在元数据和动态数据,并且看起来是正确的.不知道还有什么可以尝试.
C:\ Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog - 错误/警告
2016-06-22T23:44:12.663Z:警告:无法发布到WMI.| System.Management.Instrumentation.WmiProviderInstallationException:抛出了类型'System.Management.Instrumentation.WMIInfraException'的异常.at System.Management.Instrumentation.InstrumentationManager.Publish(Object value)2016-06-22T23:44:16.263Z:无法获取实例元数据http://169.254.169.254/latest/user-data异常远程服务器返回了未找到错误404.2016-06-22T23:44:16.263Z:无法获取元数据/用户数据远程服务器返回错误:(404)未找到.
Windows事件查看器错误
2016-06-22 23:46:59,758 [_Worker-2] ERROR [aws:getDocument] - …