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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

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

Avatar for okochang

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