我有一个简单的Powershell脚本来将文件上传到S3。我有两个EC2实例使用相同的IAM配置文件。实例和S3 bucket都位于同一个AWS帐户中。
我将RDP放入一个实例中,以管理员身份打开Powershell提示符,脚本就可以工作了。RDP到另一个实例,以管理员身份打开Powershell提示符,脚本失败,并显示:Write-S3Object:Access Denied
要检查网络/路由,两个实例都可以打开浏览器并上网。我假设用于运行的凭据是从分配给实例的角色中假设的?
如果重要的话,这是ps1脚本(访问点模糊(:
$ArtifactFile = "c:tempjunk1.txt"
$S3BucketAP = "arn:aws:s3:us-east-1:1234567890:accesspoint/my-s3-ap"
$Key = "Junk/junk1.txt"
Write-S3Object -BucketName $S3BucketAP -Key $Key -File $ArtifactFile
这是错误信息:
Write-S3Object : Access Denied
At C:temptest1.ps1:4 char:1
Write-S3Object -BucketName $S3BucketAP -Key $Key -File $ArtifactFile
+ CategoryInfo : NotSpecified: (:) [Write-S3Object], AmazonS3Exception
+ FullyQualifiedErrorId :
Amazon.S3.AmazonS3Exception,Amazon.PowerShell.Cmdlets.S3.WriteS3ObjectCmdlet
我还可以在哪里进行调试?
在reddit上,有人建议我查看环境变量,这让我考虑检查任何配置文件。当我丢弃证书时,它显示";NetSDKCredentialsFile";
Get-AWSCredential -ListProfileDetail
ProfileName StoreTypeName ProfileLocation
----------- ------------- ---------------
For_Move NetSDKCredentialsFile
default NetSDKCredentialsFile
我在这里找到了文件并将其删除:%userprofile%\AppData\Local\AWSToolkit\RegisteredAccounts.json
现在一切如预期。一定是意外安装的。