Beanstalk 上示例 PHP 应用程序的 AWS CloudFormation 模板失败
Posted
技术标签:
【中文标题】Beanstalk 上示例 PHP 应用程序的 AWS CloudFormation 模板失败【英文标题】:AWS CloudFormation template for sample PHP application on Beanstalk is failing 【发布时间】:2020-11-14 19:30:00 【问题描述】:我正在将一个 php 应用程序部署到 ElasticBeanstalk。首先,我正在部署一个示例 PHP 应用程序。
这是我的模板。
---
AWSTemplateFormatVersion: '2010-09-09'
Description: 'AWS CloudFormation Sample Template ElasticBeanstalk_PHP_Sample: Configure
and launch the AWS Elastic Beanstalk PHP sample application. **WARNING** This template
creates one or more Amazon EC2 instances. You will be billed for the AWS resources
used if you create a stack from this template.'
Parameters:
KeyName:
Description: Name of an existing EC2 KeyPair to enable SSH access to the AWS Elastic
Beanstalk instance
Type: String
MinLength: '1'
MaxLength: '255'
AllowedPattern: "[\\x20-\\x7E]*"
ConstraintDescription: can contain only ASCII characters.
Resources:
webApplication:
Type: AWS::ElasticBeanstalk::Application
Properties:
Description: AWS Elastic Beanstalk PHP Sample Application
ApplicationVersions:
- VersionLabel: Initial Version
Description: Version 1.0
SourceBundle:
S3Bucket:
Fn::Join:
- "-"
- - elasticbeanstalk-samples
- Ref: AWS::Region
S3Key: php-sample.zip
ConfigurationTemplates:
- TemplateName: DefaultConfiguration
Description: Default Configuration Version 1.0 - with SSH access
SolutionStackName: 64bit Amazon Linux 2 v3.0.3 running PHP 7.3
OptionSettings:
- Namespace: aws:autoscaling:launchconfiguration
OptionName: EC2KeyName
Value:
Ref: KeyName
testEnvironment:
Type: AWS::ElasticBeanstalk::Environment
Properties:
ApplicationName:
Ref: webApplication
Description: AWS Elastic Beanstalk Environment running PHP Sample Application
TemplateName: DefaultConfiguration
VersionLabel: Initial Version
Outputs:
URL:
Description: URL of the AWS Elastic Beanstalk Environment
Value:
Fn::Join:
- ''
- - http://
- Fn::GetAtt:
- testEnvironment
- EndpointURL
当我部署在终端中执行命令时,它失败了。这是日志。
"StackEvents": [
"StackId": "arn:aws:cloudformation:eu-west-1:733553390213:stack/CloudFormationLaravelBeanstalk/9a32a280-cdf6-11ea-8a9a-0aa806e28382",
"EventId": "cb6d7aa0-cdf6-11ea-b52a-0af573e17780",
"ResourceStatus": "ROLLBACK_COMPLETE",
"ResourceType": "AWS::CloudFormation::Stack",
"Timestamp": "2020-07-24T21:44:04.668Z",
"StackName": "CloudFormationLaravelBeanstalk",
"PhysicalResourceId": "arn:aws:cloudformation:eu-west-1:733553390213:stack/CloudFormationLaravelBeanstalk/9a32a280-cdf6-11ea-8a9a-0aa806e28382",
"LogicalResourceId": "CloudFormationLaravelBeanstalk"
,
"StackId": "arn:aws:cloudformation:eu-west-1:733553390213:stack/CloudFormationLaravelBeanstalk/9a32a280-cdf6-11ea-8a9a-0aa806e28382",
"EventId": "webApplication-DELETE_COMPLETE-2020-07-24T21:44:04.000Z",
"ResourceStatus": "DELETE_COMPLETE",
"ResourceType": "AWS::ElasticBeanstalk::Application",
"Timestamp": "2020-07-24T21:44:04Z",
"StackName": "CloudFormationLaravelBeanstalk",
"ResourceProperties": "\"Description\":\"AWS Elastic Beanstalk PHP Sample Application\",\"ApplicationVersions\":[\"Description\":\"Version 1.0\",\"VersionLabel\":\"Initial Version\",\"SourceBundle\":\"S3Bucket\":\"elasticbeanstalk-samples-eu-west-1\",\"S3Key\":\"php-sample.zip\"],\"ConfigurationTemplates\":[\"Description\":\"Default Configuration Version 1.0 - with SSH access\",\"OptionSettings\":[\"Value\":\"MyanEat\",\"Namespace\":\"aws:autoscaling:launchconfiguration\",\"OptionName\":\"EC2KeyName\"],\"TemplateName\":\"DefaultConfiguration\",\"SolutionStackName\":\"64bit Amazon Linux 2 v3.0.3 running PHP 7.3\"]",
"PhysicalResourceId": "CloudFormationLaravelBeanstalk-webApplication-197H2GUL24WJ7",
"LogicalResourceId": "webApplication"
,
"StackId": "arn:aws:cloudformation:eu-west-1:733553390213:stack/CloudFormationLaravelBeanstalk/9a32a280-cdf6-11ea-8a9a-0aa806e28382",
"EventId": "webApplication-DELETE_IN_PROGRESS-2020-07-24T21:43:33.166Z",
"ResourceStatus": "DELETE_IN_PROGRESS",
"ResourceType": "AWS::ElasticBeanstalk::Application",
"Timestamp": "2020-07-24T21:43:33.166Z",
"StackName": "CloudFormationLaravelBeanstalk",
"ResourceProperties": "\"Description\":\"AWS Elastic Beanstalk PHP Sample Application\",\"ApplicationVersions\":[\"Description\":\"Version 1.0\",\"VersionLabel\":\"Initial Version\",\"SourceBundle\":\"S3Bucket\":\"elasticbeanstalk-samples-eu-west-1\",\"S3Key\":\"php-sample.zip\"],\"ConfigurationTemplates\":[\"Description\":\"Default Configuration Version 1.0 - with SSH access\",\"OptionSettings\":[\"Value\":\"MyanEat\",\"Namespace\":\"aws:autoscaling:launchconfiguration\",\"OptionName\":\"EC2KeyName\"],\"TemplateName\":\"DefaultConfiguration\",\"SolutionStackName\":\"64bit Amazon Linux 2 v3.0.3 running PHP 7.3\"]",
"PhysicalResourceId": "CloudFormationLaravelBeanstalk-webApplication-197H2GUL24WJ7",
"LogicalResourceId": "webApplication"
,
"StackId": "arn:aws:cloudformation:eu-west-1:733553390213:stack/CloudFormationLaravelBeanstalk/9a32a280-cdf6-11ea-8a9a-0aa806e28382",
"EventId": "testEnvironment-DELETE_COMPLETE-2020-07-24T21:43:32.486Z",
"ResourceStatus": "DELETE_COMPLETE",
"ResourceType": "AWS::ElasticBeanstalk::Environment",
"Timestamp": "2020-07-24T21:43:32.486Z",
"StackName": "CloudFormationLaravelBeanstalk",
"ResourceProperties": "\"ApplicationName\":\"CloudFormationLaravelBeanstalk-webApplication-197H2GUL24WJ7\",\"Description\":\"AWS Elastic Beanstalk Environment running PHP Sample Application\",\"VersionLabel\":\"Initial Version\",\"TemplateName\":\"DefaultConfiguration\"",
"PhysicalResourceId": "Clou-test-2HSOCMRY8B2",
"LogicalResourceId": "testEnvironment"
,
"StackId": "arn:aws:cloudformation:eu-west-1:733553390213:stack/CloudFormationLaravelBeanstalk/9a32a280-cdf6-11ea-8a9a-0aa806e28382",
"EventId": "testEnvironment-DELETE_IN_PROGRESS-2020-07-24T21:43:31.824Z",
"ResourceStatus": "DELETE_IN_PROGRESS",
"ResourceType": "AWS::ElasticBeanstalk::Environment",
"Timestamp": "2020-07-24T21:43:31.824Z",
"StackName": "CloudFormationLaravelBeanstalk",
"ResourceProperties": "\"ApplicationName\":\"CloudFormationLaravelBeanstalk-webApplication-197H2GUL24WJ7\",\"Description\":\"AWS Elastic Beanstalk Environment running PHP Sample Application\",\"VersionLabel\":\"Initial Version\",\"TemplateName\":\"DefaultConfiguration\"",
"PhysicalResourceId": "Clou-test-2HSOCMRY8B2",
"LogicalResourceId": "testEnvironment"
,
"StackId": "arn:aws:cloudformation:eu-west-1:733553390213:stack/CloudFormationLaravelBeanstalk/9a32a280-cdf6-11ea-8a9a-0aa806e28382",
"EventId": "b5e05bd0-cdf6-11ea-80b1-062b1cfafef6",
"ResourceStatus": "ROLLBACK_IN_PROGRESS",
"ResourceType": "AWS::CloudFormation::Stack",
"Timestamp": "2020-07-24T21:43:28.511Z",
"ResourceStatusReason": "The following resource(s) failed to create: [testEnvironment]. . Rollback requested by user.",
"StackName": "CloudFormationLaravelBeanstalk",
"PhysicalResourceId": "arn:aws:cloudformation:eu-west-1:733553390213:stack/CloudFormationLaravelBeanstalk/9a32a280-cdf6-11ea-8a9a-0aa806e28382",
"LogicalResourceId": "CloudFormationLaravelBeanstalk"
,
"StackId": "arn:aws:cloudformation:eu-west-1:733553390213:stack/CloudFormationLaravelBeanstalk/9a32a280-cdf6-11ea-8a9a-0aa806e28382",
"EventId": "testEnvironment-CREATE_FAILED-2020-07-24T21:43:27.905Z",
"ResourceStatus": "CREATE_FAILED",
"ResourceType": "AWS::ElasticBeanstalk::Environment",
"Timestamp": "2020-07-24T21:43:27.905Z",
"ResourceStatusReason": "Environment failed to launch as it entered Terminated state",
"StackName": "CloudFormationLaravelBeanstalk",
"ResourceProperties": "\"ApplicationName\":\"CloudFormationLaravelBeanstalk-webApplication-197H2GUL24WJ7\",\"Description\":\"AWS Elastic Beanstalk Environment running PHP Sample Application\",\"VersionLabel\":\"Initial Version\",\"TemplateName\":\"DefaultConfiguration\"",
"PhysicalResourceId": "Clou-test-2HSOCMRY8B2",
"LogicalResourceId": "testEnvironment"
,
"StackId": "arn:aws:cloudformation:eu-west-1:733553390213:stack/CloudFormationLaravelBeanstalk/9a32a280-cdf6-11ea-8a9a-0aa806e28382",
"EventId": "testEnvironment-CREATE_IN_PROGRESS-2020-07-24T21:42:57.297Z",
"ResourceStatus": "CREATE_IN_PROGRESS",
"ResourceType": "AWS::ElasticBeanstalk::Environment",
"Timestamp": "2020-07-24T21:42:57.297Z",
"ResourceStatusReason": "Resource creation Initiated",
"StackName": "CloudFormationLaravelBeanstalk",
"ResourceProperties": "\"ApplicationName\":\"CloudFormationLaravelBeanstalk-webApplication-197H2GUL24WJ7\",\"Description\":\"AWS Elastic Beanstalk Environment running PHP Sample Application\",\"VersionLabel\":\"Initial Version\",\"TemplateName\":\"DefaultConfiguration\"",
"PhysicalResourceId": "Clou-test-2HSOCMRY8B2",
"LogicalResourceId": "testEnvironment"
,
"StackId": "arn:aws:cloudformation:eu-west-1:733553390213:stack/CloudFormationLaravelBeanstalk/9a32a280-cdf6-11ea-8a9a-0aa806e28382",
"EventId": "testEnvironment-CREATE_IN_PROGRESS-2020-07-24T21:42:55.237Z",
"ResourceStatus": "CREATE_IN_PROGRESS",
"ResourceType": "AWS::ElasticBeanstalk::Environment",
"Timestamp": "2020-07-24T21:42:55.237Z",
"StackName": "CloudFormationLaravelBeanstalk",
"ResourceProperties": "\"ApplicationName\":\"CloudFormationLaravelBeanstalk-webApplication-197H2GUL24WJ7\",\"Description\":\"AWS Elastic Beanstalk Environment running PHP Sample Application\",\"VersionLabel\":\"Initial Version\",\"TemplateName\":\"DefaultConfiguration\"",
"PhysicalResourceId": "",
"LogicalResourceId": "testEnvironment"
,
"StackId": "arn:aws:cloudformation:eu-west-1:733553390213:stack/CloudFormationLaravelBeanstalk/9a32a280-cdf6-11ea-8a9a-0aa806e28382",
"EventId": "webApplication-CREATE_COMPLETE-2020-07-24T21:42:53.537Z",
"ResourceStatus": "CREATE_COMPLETE",
"ResourceType": "AWS::ElasticBeanstalk::Application",
"Timestamp": "2020-07-24T21:42:53.537Z",
"StackName": "CloudFormationLaravelBeanstalk",
"ResourceProperties": "\"Description\":\"AWS Elastic Beanstalk PHP Sample Application\",\"ApplicationVersions\":[\"Description\":\"Version 1.0\",\"VersionLabel\":\"Initial Version\",\"SourceBundle\":\"S3Bucket\":\"elasticbeanstalk-samples-eu-west-1\",\"S3Key\":\"php-sample.zip\"],\"ConfigurationTemplates\":[\"Description\":\"Default Configuration Version 1.0 - with SSH access\",\"OptionSettings\":[\"Value\":\"MyanEat\",\"Namespace\":\"aws:autoscaling:launchconfiguration\",\"OptionName\":\"EC2KeyName\"],\"TemplateName\":\"DefaultConfiguration\",\"SolutionStackName\":\"64bit Amazon Linux 2 v3.0.3 running PHP 7.3\"]",
"PhysicalResourceId": "CloudFormationLaravelBeanstalk-webApplication-197H2GUL24WJ7",
"LogicalResourceId": "webApplication"
,
"StackId": "arn:aws:cloudformation:eu-west-1:733553390213:stack/CloudFormationLaravelBeanstalk/9a32a280-cdf6-11ea-8a9a-0aa806e28382",
"EventId": "webApplication-CREATE_IN_PROGRESS-2020-07-24T21:42:51.643Z",
"ResourceStatus": "CREATE_IN_PROGRESS",
"ResourceType": "AWS::ElasticBeanstalk::Application",
"Timestamp": "2020-07-24T21:42:51.643Z",
"ResourceStatusReason": "Resource creation Initiated",
"StackName": "CloudFormationLaravelBeanstalk",
"ResourceProperties": "\"Description\":\"AWS Elastic Beanstalk PHP Sample Application\",\"ApplicationVersions\":[\"Description\":\"Version 1.0\",\"VersionLabel\":\"Initial Version\",\"SourceBundle\":\"S3Bucket\":\"elasticbeanstalk-samples-eu-west-1\",\"S3Key\":\"php-sample.zip\"],\"ConfigurationTemplates\":[\"Description\":\"Default Configuration Version 1.0 - with SSH access\",\"OptionSettings\":[\"Value\":\"MyanEat\",\"Namespace\":\"aws:autoscaling:launchconfiguration\",\"OptionName\":\"EC2KeyName\"],\"TemplateName\":\"DefaultConfiguration\",\"SolutionStackName\":\"64bit Amazon Linux 2 v3.0.3 running PHP 7.3\"]",
"PhysicalResourceId": "CloudFormationLaravelBeanstalk-webApplication-197H2GUL24WJ7",
"LogicalResourceId": "webApplication"
,
"StackId": "arn:aws:cloudformation:eu-west-1:733553390213:stack/CloudFormationLaravelBeanstalk/9a32a280-cdf6-11ea-8a9a-0aa806e28382",
"EventId": "webApplication-CREATE_IN_PROGRESS-2020-07-24T21:42:51.125Z",
"ResourceStatus": "CREATE_IN_PROGRESS",
"ResourceType": "AWS::ElasticBeanstalk::Application",
"Timestamp": "2020-07-24T21:42:51.125Z",
"StackName": "CloudFormationLaravelBeanstalk",
"ResourceProperties": "\"Description\":\"AWS Elastic Beanstalk PHP Sample Application\",\"ApplicationVersions\":[\"Description\":\"Version 1.0\",\"VersionLabel\":\"Initial Version\",\"SourceBundle\":\"S3Bucket\":\"elasticbeanstalk-samples-eu-west-1\",\"S3Key\":\"php-sample.zip\"],\"ConfigurationTemplates\":[\"Description\":\"Default Configuration Version 1.0 - with SSH access\",\"OptionSettings\":[\"Value\":\"MyanEat\",\"Namespace\":\"aws:autoscaling:launchconfiguration\",\"OptionName\":\"EC2KeyName\"],\"TemplateName\":\"DefaultConfiguration\",\"SolutionStackName\":\"64bit Amazon Linux 2 v3.0.3 running PHP 7.3\"]",
"PhysicalResourceId": "",
"LogicalResourceId": "webApplication"
,
我的代码有什么问题,我该如何解决?
【问题讨论】:
【参考方案1】:我尝试验证问题并将您的模板部署到我的沙盒帐户。
我发现由于ConfigurationTemplates
中缺少实例配置文件导致部署失败:
- Namespace: aws:autoscaling:launchconfiguration
OptionName: IamInstanceProfile
Value: !Ref MyInstanceProfile
因此,您必须使用您的 EB 实例将拥有的 IAM 角色创建 AWS::IAM::InstanceProfile。在基本形式中,您可以这样做:
MyInstanceRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service:
- ec2.amazonaws.com
Action:
- sts:AssumeRole
Description: Beanstalk EC2 role
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier
- arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker
- arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier
MyInstanceProfile:
Type: AWS::IAM::InstanceProfile
Properties:
Roles:
- !Ref MyInstanceRole
【讨论】:
嗨@Marcin。这只是 ElasticBeanstalk 与 CloudFomration 的另一个问题。如何为 ElasticBeanstalk 显式设置 VPC?我也无法在文档中找到该选项。有可能吗? @WaiYanHein 您不能对现有的 EB 执行此操作。必须创建新的 EB 环境。您在 options 中指定它。 好的。这就是我所追求的。谢谢。 @WaiYanHein 没问题 :-)以上是关于Beanstalk 上示例 PHP 应用程序的 AWS CloudFormation 模板失败的主要内容,如果未能解决你的问题,请参考以下文章
在 Amazon Elastic Beanstalk 或一般实例或服务器上运行的 PHP 应用程序有啥区别?
通过 Jenkins 在所有 AWS Beanstalk 实例上部署新的 PHP 代码并运行 Composer?
具有 laravel 权限的 PHP Beanstalk 在存储/框架/缓存上被拒绝
在 BeanStalk 中运行 PHP 应用程序与手动 EC2 实例