本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
步骤 3:创建和部署自定义说明书
重要
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre
堆栈尚未就绪:
-
您的应用程序需要一些信息来访问 MySQL 数据库服务器和 Amazon S3 存储桶,例如数据库主机名和 Amazon S3 存储桶名称。
-
您需要在 MySQL 数据库服务器中设置数据库,并创建表来保存照片的元数据。
你可以手动处理这些任务,但更好的方法是实现 Chef 配方,让 AWS OpsWorks Stacks 在相应的实例上自动运行配方。Chef 配方是专门的 Ruby 应用程序, AWS OpsWorks Stacks 使用它在实例上执行任务,例如安装软件包或创建配置文件。它们打包在说明书 中,说明书可以包含多个配方和相关的文件,例如配置文件的模板。食谱放在存储库中,例如 GitHub,并且必须具有标准的目录结构。如果您还没有自定义说明书存储库,请参阅说明书存储库,以了解如何进行设置的信息。
在此示例中,食谱已为您实现并存储在公共存储 GitHub 库appsetup.rb
和 dbsetup.rb
,以及一个模板文件 db-connect.php.erb
。
appsetup.rb
配方将创建配置文件,其中包含应用程序访问数据库和 Amazon S3 存储桶所需信息。它基本上是 将应用程序连接到数据库 中所述的 appsetup.rb
配方经过略微修改的版本。主要差别在于传递到模板的变量,这代表了访问信息。
前四个属性定义数据库连接设置,由 AWS OpsWorks 堆栈在创建 MySQL 实例时自动定义。
这些变量与原始配方中的变量之间有两个主要差别:
-
与原始配方一样,
table
变量表示由dbsetup.rb
创建的数据库表的名称,并设置为在说明书的属性文件中定义的属性的值。但是,该属性有不同的名称:
[:photoapp][:dbtable]
。 -
s3bucket
变量特定于此示例,设置为表示 Amazon S3 存储桶名称的属性[:photobucket]
的值。[:photobucket]
使用自定义 JSON 定义,如下文所述。有关属性的更多信息,请参阅Attributes。
有关属性的更多信息,请参阅Attributes。
dbsetup.rb
配方设置数据库表用于保存各个照片的元数据。它基本上是 dbsetup.rb
中所述的 设置数据库 配方经过略微修改的版本;有关详细说明,请参阅该主题。
此示例与原始配方之间的唯一差别是数据库架构,它有三列,包含 ID、URL 和各照片的标题,存储在 Amazon S3 存储桶中。
食谱已经实现了,所以你所需要做的就是将 photoapp 食谱部署到每个实例的食谱缓存中。 AWS OpsWorks 然后,当相应的生命周期事件发生时,Stacks 会运行缓存的配方,如下所述。
部署 photoapp 说明书
-
在 “堆栈 AWS OpsWorks 堆栈” 页面上,选择 “堆栈设置”,然后选择 “编辑”。
-
在 Configuration Management 部分中:
-
将 Use custom Chef cookbooks 设置为 Yes。
-
将 Repository type 设置为 Git。
-
将 Repository URL (存储库 URL) 设置为
git://github.com/amazonwebservices/opsworks-example-cookbooks.git
。
-
-
在 Stack (堆栈) 页面上,依次选择 Run Command (运行命令)、Update Custom Cookbooks (更新自定义说明书) 堆栈命令以及 Update Custom Cookbooks (更新自定义说明书),以将新说明书安装到实例说明书缓存中。