Загрузить файл на S3, используя perl и AWS cli - PullRequest
0 голосов
/ 14 октября 2019

Hy Guys

Я пытаюсь загрузить файл, используя perl и AWS CLI. Вот загрузка файла в часть S3 из моего скрипта.

 if (-d "$destdir/$agent") {
            if (aws s3 $ogg_file   s3://recordings)
        } else {
               print STDERR "Failed to move\n";
        }

или есть какой-нибудь простой способ сделать это?

  • debian_version 7.11
  • Perl 5, версия 14, Subversion 2 (v5.14.2)
  • Python2,7

Ответы [ 2 ]

2 голосов
/ 14 октября 2019

Уже есть PAWS , который является Perl SDK для AWS.

Поскольку вы используете awscli, как упоминал Дэйв, вы должны использовать команду system или backtics (``) для запускаЭто внешняя программа.

Я уже создал небольшой скрипт для выполнения операции aws с использованием cli в прошлом. Для справки вы можете взглянуть на это. https://github.com/sudo-batman/perl-toolkit/tree/master/AWS

Вы можете использовать «cp» или «sync» для своей работы. Вы должны запустить что-то вроде -

my $cmd = "aws s3 sync " . $input_location . " s3://" . $bucket_name . "/" . $folder_name . "/";
$upload_output = `$cmd`;
print ($upload_output); 
1 голос
/ 14 октября 2019

Очень маловероятно, что вы используете библиотеку, которая превращает aws в команду Perl. Вероятнее всего, aws - это внешняя программа, которую вы пытаетесь запустить. В этом случае вам нужно запустить его с помощью функции Perl system().

system('aws', 's3', $ogg_file, 's3://recordings');

Обратите внимание, что system() имеет немного странное возвращаемое значение. Вам нужно прочитать документацию и, возможно, изменить логику в вашем if утверждении.

...