Aws::S3::Client.copy_object の copy_source は、URL encode されていなければならない

例えば、バケットからバケットへオブジェクトをコピーするときに、
`The specified key does not exist.` とエラーが出る場合がありました。

client = Aws::S3::Client.new

client.copy_object(
      bucket: out_bucket_name,
      copy_source: src_bucket_name + '/' + object_key,
      key: object_key,
      acl: 'public-read',
      cache_control: "max-age=#{OBJECT_MAX_AGE}",
      content_type: src_object.content_type,
      metadata_directive: 'REPLACE',
    )

https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/S3/Client.html#copy_object-instance_method
ドキュメントを見ると、The value must be URL encoded.とあったので、
これは、 copy_source に渡している、object_key に、hogehoge%2B.pngなど、エスケープされていない文字が含まれていると、パスが見つからず、エラーになってしまうようです。

URI.encode_www_form_component(src_bucket_name + '/' + object_key) などで、エンコードしましょう。