Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWSのAPIを使うときに気をつけてること

 AWSのAPIを使うときに気をつけてること

okochang

May 23, 2015
Tweet

More Decks by okochang

Other Decks in Technology

Transcript

  1. ログ出⼒力力をしよう2 require ‘logger’ logger = Logger.new(‘script.log’) logger.level = Logger::ERROR ||

    Logger::INFO logger.formatter = Logger::Forrmatter.new logger.error(“sample error message”)
  2. エラー処理理例例 #!/bin/bash trap ‘echo “backup failed $BASH_COMMAND” ; exit 1’ERR

    aws ec2 create-images --instance i-xxxxxxxx --name backup-ami echo backup succeeded exit 0
  3. エラー処理理例例 def sample(region, instance_id, name, desc) @ec2 = Aws::EC2::Resource.new(region: region)

    @logger = Logger.new(‘script.log’) begin @ec2.instance(instance_id).create_image( name: name, description: desc ) rescue => e @logger.error { e } end end
  4. エラー別に処理理をわける def sample(region, instance_id, name, desc) @ec2 = Aws::EC2::Resource.new(region: region)

    begin @ec2.instance(instance_id).create_image(name: name, description: desc) rescue USER_EXCEPTIONS => e # エラー処理理    rescue SYSTEM_EXCEPTIONS => e # エラー処理理 rescue => e # エラー処理理 end end
  5. AWS  SDK  for  Ruby  +  2.0でのリトライ require ‘aws-sdk’ @ec2 =

    Aws::EC2::Resource.new( region: region, retry_limit: 10 )
  6. リトライした例例 def sample(region, instance_id, name, desc) @ec2 = Aws::EC2::Resource.new(region: region)

    begin Retriable.retriable on: RETRY_EXCEPTIONS do  @ec2.instance(instance_id).create_image(name: name, description: desc) # その他リトライしたい処理理 end rescue USER_EXCEPTIONS => e # エラー処理理    rescue => e # エラー処理理 end end
  7. その他の⾔言語で • Python   •  retrying   •  h6ps://pypi.python.org/pypi/retrying   • 

    Go⾔言語   •  backoff   •  h6ps://github.com/cenkalO/backoff  
  8. 参考 •  h6p://jarp.does.notwork.org/diary/201210b.html#20121014   •  h6p://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-­‐ overview.html   •  h6p://docs.aws.amazon.com/AmazonRDS/latest/APIReference/

    CommonErrors.html   •  h6p://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html   •  h6p://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Client.html   •  h6p://docs.aws.amazon.com/AWSRubySDK/latest/AWS/Core/ ConfiguraOon.html#max_retries-­‐instance_method   •  h6ps://pypi.python.org/pypi/retrying   •  h6ps://github.com/cenkalO/backoff