OpsWorks (Chef 11.10) 内のカスタムレシピでaws-sdk-v2を使う方法

More than 1 year has passed since last update.


背景

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を利用できました。