背景
OpsWorks (Chef 11.10) でカスタムレシピを利用しようとすると、aws-sdkのバージョンがv1のため、最近のサービスをAPIから利用できませんでした。
以下、v2を利用するための手順です。
手順
aws-sdk-v2をgem install
具体的には以下のカスタムレシピをまず実行しときます。
install_aws_sdk_v2.rb
chef_gem "aws-sdk" do
version "2.10.55"
action :install
end
利用するときにaws-sdk-v2をrequire
aws-sdk
で require してしまうと、v1が読み込まれてしまいます。
v2を利用するためには、 aws-sdk-resources
を指定すれば良いです。
以下はv1では利用できなかったALB連携の例。
require 'aws-sdk-resources'
region = node["opsworks"]["instance"]["region"]
ec2_instance_id = node["opsworks"]["instance"]["aws_instance_id"]
client = ::Aws::ElasticLoadBalancingV2::Client.new(region: region)
target_to_attach = {
target_group_arn: "xxxx",
targets: [{ id: ec2_instance_id }]
}
client.register_targets(target_to_attach)
これでv2を利用できました。