Amazon web services 错误代码:向无服务器应用程序存储库提交应用程序时禁止403
我试图将我的应用程序发布到无服务器应用程序存储库,但在选择“template.yml”文件时出错: 禁止服务:亚马逊S3;状态代码:403;错误代码:403 被禁止的请求ID:XXXXXXXXXXXXX;S3扩展请求ID: XXXXXXXXXXXXXX 这是我的“template.yml”:Amazon web services 错误代码:向无服务器应用程序存储库提交应用程序时禁止403,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我试图将我的应用程序发布到无服务器应用程序存储库,但在选择“template.yml”文件时出错: 禁止服务:亚马逊S3;状态代码:403;错误代码:403 被禁止的请求ID:XXXXXXXXXXXXX;S3扩展请求ID: XXXXXXXXXXXXXX 这是我的“template.yml”: AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Serverless-2016-10-31' Resources: DataScrape
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Resources:
DataScraper:
Type: 'AWS::Serverless::Function'
Properties:
Handler: data_scraper.handler
Runtime: python3.6
CodeUri:
Bucket: ht-helpbot
Key: data_scraper.zip
Version: 1.0
CodeUri: 's3://ht-helpbot/data_scraper.zip'
Policies:
- DynamoDBCrudPolicy:
TableName: HTServiceProviderTable
FindService:
Type: 'AWS::Serverless::Function'
Properties:
Handler: find_service.handler
Runtime: python3.6
CodeUri: 's3://ht-helpbot/find_service.zip'
Policies:
- DynamoDBCrudPolicy:
TableName: HTServiceProviderTable
我必须授予对S3存储桶和对象的公共读取权限,以使其工作。我必须授予对S3存储桶和对象的公共读取权限,以使其工作。我通过为我的存储桶输入以下策略来解决此问题:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "serverlessrepo.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::BUCKET_NAME/*"
}
]
}
其中BUCKET_NAME是我的BUCKET的名称
请用大量的NaCl来回答这个问题,因为我对AWS权限不是很了解
简单地授予对我的S3存储桶的公共读取权限对我来说并不像@harry那样有效。此外,我还必须包含由sam deploy构建的packaged.yaml模板—它包含完整的S3 URL。我通过为我的bucket创建以下策略来解决此问题:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "serverlessrepo.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::BUCKET_NAME/*"
}
]
}
其中BUCKET_NAME是我的BUCKET的名称
请用大量的NaCl来回答这个问题,因为我对AWS权限不是很了解
简单地授予对我的S3存储桶的公共读取权限对我来说并不像@harry那样有效。此外,我还必须包括由sam deploy构建的packaged.yaml模板—它包括完整的S3 URL。为了能够使用无服务器应用程序存储库serverlessrepo发布应用程序,serverlessrepo需要能够在打包应用程序期间读取上传到S3的S3工件 提供这些权限的标准方法(如中所述)是在您的Bucket上为serverlessrepo提供一个资源策略,例如下面的示例,其中将替换为S3 Bucket的名称
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "serverlessrepo.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<your-bucket-name>/*"
}
]
}
它在何时开始工作的原因是,通过这样做,您使该bucket中的对象(包括来自打包world的工件)可读,包括serverlessrepo服务。正如文件中所指出的,虽然这是可行的:
如果您不建议公开您的bucket,则任何未经验证的用户都可以将对象上载到bucket
为了能够使用无服务器应用程序存储库serverlessrepo发布应用程序,serverlessrepo需要能够在打包应用程序期间读取上载到S3的S3工件 提供这些权限的标准方法(如中所述)是在您的Bucket上为serverlessrepo提供一个资源策略,例如下面的示例,其中将替换为S3 Bucket的名称
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "serverlessrepo.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<your-bucket-name>/*"
}
]
}
它在何时开始工作的原因是,通过这样做,您使该bucket中的对象(包括来自打包world的工件)可读,包括serverlessrepo服务。正如文件中所指出的,虽然这是可行的:
如果您不建议公开您的bucket,则任何未经验证的用户都可以将对象上载到bucket
您是否已通过AWS帐户的身份验证?听起来您没有权限在您使用的帐户上发布服务。是的,我已登录到帐户HMMMM。那么,除非你使用的帐户受到限制,不允许形成该功能,否则我不知道。对不起,您是否已通过AWS帐户的身份验证?听起来您没有权限在您使用的帐户上发布服务。是的,我已登录到帐户HMMMM。那么,除非你使用的帐户受到限制,不允许形成该功能,否则我不知道。对不起,不是推荐的方法-见上面的@jamie Starke解释:不是推荐的方法-见上面的@jamie Starke解释: