# Logstash-input-s3 cannot back up with an S3 key that contains characters that need to be URL-encoded

**URL:** <https://discuss.elastic.co/t/logstash-input-s3-cannot-back-up-with-an-s3-key-that-contains-characters-that-need-to-be-url-encoded/244882>\
**Category:** Logstash\
**Created:** [August 13, 2020, 12:52pm UTC](https://discuss.elastic.co/t/logstash-input-s3-cannot-back-up-with-an-s3-key-that-contains-characters-that-need-to-be-url-encoded/244882 "2020-08-13T12:52:43Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![fukasawah](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/fukasawah/32/73823_2.png) [@fukasawah](https://discuss.elastic.co/u/fukasawah)\
**Post date:** [August 13, 2020, 12:52pm UTC](https://discuss.elastic.co/t/logstash-input-s3-cannot-back-up-with-an-s3-key-that-contains-characters-that-need-to-be-url-encoded/244882/1 "2020-08-13T12:52:43Z")

</div>

Hello.  
Regarding the title, Is there any way to fix it?  
I suspect it's a bug in the plugin.

- Version: logstash-input-s3-3.5.0
- Operating System: Windows Server 2016
- Config File:

```auto
input {
  s3 {
    bucket => "fukasawah-123123"
    access_key_id => " *********"
    secret_access_key => " ******"
    region => "ap-northeast-1"
    prefix => "target/"
    backup_to_bucket => "fukasawah-123123"
    backup_add_prefix => "done/"
    delete => true
    interval => 60
    watch_for_new_files => true
  }
}

output {
  stdout { codec => rubydebug }
}

```

- Sample Data: None
- Steps to Reproduce:
  1. Put "target/あいうえお.csv" to S3 Bucket
  2. run `logstash -f this.conf`

  - Expect: Copy to `#{backup_to_bucket}/#{backup_add_prefix}#{object.key}` (eg.` fukasawah-123123/done/target/あいうえお.csv`)
  - Actual: NoSuchKey Error

Error log

```auto
[2020-08-13T11:49:33,699][ERROR][logstash.javapipeline][main][43583c7fe524300b82b78d448ad2a716bb12e59208496b16db6d6b9c20e49f60] A plugin had an unrecoverable error. Will restart this plugin.
  Pipeline_id:main
  Plugin: <LogStash::Inputs::S3 bucket=>"fukasawah-123123", access_key_id=>" *****", backup_to_bucket=>"fukasawah-123123", prefix=>"target/", backup_add_prefix=>"done/", secret_access_key=><password>, interval=>60, id=>"43583c7fe524300b82b78d448ad2a716bb12e59208496b16db6d6b9c20e49f60", region=>"ap-northeast-1", watch_for_new_files=>true, enable_metric=>true, codec=><LogStash::Codecs::Plain id=>"plain_6df6be98-b9ba-4b6a-8304-*************", enable_metric=>true, charset=>"UTF-8">, role_session_name=>"logstash", delete=>false, temporary_directory=>"C:/Users/ADMINI~1/AppData/Local/Temp/2/logstash", include_object_properties=>false, gzip_pattern=>".gz(ip)?$">
  Error: The specified key does not exist.
  Exception: Aws::S3::Errors::NoSuchKey
  Stack: C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/aws-sdk-core-2.11.540/lib/seahorse/client/plugins/raise_response_errors.rb:15:in `call'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/aws-sdk-core-2.11.540/lib/aws-sdk-core/plugins/s3_sse_cpk.rb:19:in `call'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/aws-sdk-core-2.11.540/lib/aws-sdk-core/plugins/s3_dualstack.rb:24:in `call'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/aws-sdk-core-2.11.540/lib/aws-sdk-core/plugins/s3_accelerate.rb:34:in `call'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/aws-sdk-core-2.11.540/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:20:in `call'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/aws-sdk-core-2.11.540/lib/aws-sdk-core/plugins/idempotency_token.rb:18:in `call'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/aws-sdk-core-2.11.540/lib/aws-sdk-core/plugins/param_converter.rb:20:in `call'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/aws-sdk-core-2.11.540/lib/seahorse/client/plugins/response_target.rb:21:in `call'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/aws-sdk-core-2.11.540/lib/seahorse/client/request.rb:70:in `send_request'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/aws-sdk-core-2.11.540/lib/seahorse/client/base.rb:207:in `block in define_operation_methods'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/aws-sdk-resources-2.11.540/lib/aws-sdk-resources/services/s3/object.rb:64:in `copy_from'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-input-s3-3.5.0/lib/logstash/inputs/s3.rb:160:in `backup_to_bucket'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-input-s3-3.5.0/lib/logstash/inputs/s3.rb:380:in `process_log'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-input-s3-3.5.0/lib/logstash/inputs/s3.rb:180:in `block in process_files'
org/jruby/RubyArray.java:1809:in `each'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-input-s3-3.5.0/lib/logstash/inputs/s3.rb:176:in `process_files'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-input-s3-3.5.0/lib/logstash/inputs/s3.rb:123:in `block in run'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/stud-0.0.23/lib/stud/interval.rb:20:in `interval'
C:/opt/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-input-s3-3.5.0/lib/logstash/inputs/s3.rb:122:in `run'
C:/opt/logstash/logstash-core/lib/logstash/java_pipeline.rb:374:in `inputworker'
C:/opt/logstash/logstash-core/lib/logstash/java_pipeline.rb:365:in `block in start_input'

```

AWS SDK Ruby v2 [copy\_from(:copy\_source)](https://docs.aws.amazon.com/sdk-for-ruby/v2/api/Aws/S3/Object.html#copy_from-instance_method) must be URL-encoded, but it doesn't look like that's being done in the plugin's process.

> <https://github.com/logstash-plugins/logstash-input-s3/blob/v3.5.0/lib/logstash/inputs/s3.rb#L158>

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [September 10, 2020, 12:52pm UTC](https://discuss.elastic.co/t/logstash-input-s3-cannot-back-up-with-an-s3-key-that-contains-characters-that-need-to-be-url-encoded/244882/2 "2020-09-10T12:52:55Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
