ociをインストールする

# はじめに
本記事はociのインストール及びセットアップ方法について記載しています。
また、ociをインストールする際にエラーが発生した場合の対処方法（※）を記載しています。

（※）本記事の環境はMac、Pythonのバージョンは3.7.3

## ociのインストール
[クイックスタート](https://docs.oracle.com/cd/E97706_01/Content/API/SDKDocs/cliinstall.htm#PromptsInstall)を参照し、以下のコマンドを実行します。

`# bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"`

スクリプト実行後、対話的に進めると以下のメッセージが発生しました。

```console
Traceback (most recent call last):
  File "/var/folders/kh/jt8fs9j53fs0scjl8hxv046w0000gn/T/oci_cli_install_tmp_XXXX.ByFbajUS", line 139, in create_virtualenv
    response = urlopen(VIRTUALENV_DOWNLOAD_URL)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 525, in open
    response = self._open(req, data)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 543, in _open
    '_open', req)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 503, in _call_chain
    result = func(*args)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 1360, in https_open
    context=self._context, check_hostname=self._check_hostname)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 1319, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)>
ERROR: Failed to download virtualenv package. Please check that your trusted certificates are up to date and include the certificates necessary to verify github.com
```

スクリプト実行時のダウンロード中にエラーが発生した原因は、スクリプトから呼び出されたPythonのプログラムによるHTTPSアクセスでの証明書検証が失敗しているためです。

よって、上記エラーが出力された場合は以下を実行することで対処できます。


1. [Macintosh HD]> [アプリケーション]> [Python3.7]フォルダー（または使用しているpythonのバージョン）に移動し、[Install Certificates.command]ファイルをダブルクリックします。

![スクリーンショット 2020-01-10 17.24.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/a77e3314-9657-ffcf-4313-7bd688eca6e3.png)

2.次に、「Update Shell Profile.command」をクリックします。

![スクリーンショット 2020-01-10 17.32.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/8416b422-a0a5-dfee-2af8-e8501712b268.png)

3.上記実行後に再度スクリプトを実行します。対話的に入力が求められる箇所は入力を行い、スクリプト終了後、ociのインストールが行われています。

## ociのセットアップ
本記事では、`oci setup config`コマンドを実行してセットアップを行います。
本コマンドを実行することで構成ファイルとAPI公開/秘密キーを作成します。

`# /Users/＜ユーザ名＞/bin/oci setup config`

## 公開キーの追加
Oracle Cloudのコンソールにログインし、認証を行うユーザに公開キーを追加します。
作成した公開キーの中身をコピーし、ペーストします。

コンソールの操作手順については[Required Keys and OCIDs](https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#How2)を参照。

## ociの動作確認
ociの動作確認を行います。
以下のコマンドはコンパートメント配下のリストを出力します。

`# /Users/＜ユーザ名＞/bin/oci iam compartment list --all`

既にconfigファイルが存在する場合は、エラーが発生するときがあります。

```console
FileNotFoundError: [Errno 2] No such file or directory: '/Users/＜ユーザ名＞/.oci/oci_api_key.pem'
```

上記の様なエラーが出力された場合は、[DEFAULT]を認証を行うユーザに変更します。

# おわりに
オブジェクトストレージに作成したバケット内に大量のオブジェクトがある場合は、ociを使用することでバケット内のオブジェクトの一括削除ができます。

Oracle Cloudを使用する場合は、ociを有効活用することで効率化が期待できます。