20210417のAWSに関する記事は19件です。

アンマネージドサービス/マネージドサービスについて

概要 AWSについて学習していたときに出てきた、マネージドサービス/アンマネージサービスについて理解するのに少し混乱したためまとめてみた。 参考書籍 ゼロからわかる Amazon Web Services超入門 はじめてのクラウド かんたんIT基礎講座 マネージドサービス/アンマネージサービス マネージドサービスとは 特定の目的の設定が完了した状態のサービスを貸し出すサービスをマネージドサービスという。 代表的なものとしてS3などが挙げられる アンマネージドサービスとは 素のままのサーバーを貸し出すサービスをアンマネージドサービスという。 代表的なものとしてEC2などが挙げられる 責任分界点 マネージドサービスとアンマネージドサービスでは、どこまでを自分で担当するか、どこまでクラウドサービスが担当してくれるかという違いもある この担当の分岐点のことを責任分界点という 責任分界点がクラウドサービス側に寄っているものほど保守運用をクラウドサービスに任せられる = 運用の手間を軽減できるということになる。 SaaS、PaaS、IaaS クラウドを語るとき、「どこまでの機能が提供されるのか」を分ける用語としてSaaS、PaaS、IaaSという3つの言葉がよく使われる。 SaaS ソフトウェアの機能がサービスとして提供されるもの。 多くのマネージドサービスがこれに相当し、利用者は保守・運用の一切を任せることができる。 PaaS アプリケーションを実行するためのプラットフォームを提供するもの。 IaaS ネットワークや仮想的なサーバーなど、インフラ部分を提供するもの。 アンマネージドサービスがこれに相当し、利用者は全体の保守・管理をする必要がある。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【AWS】アンマネージドサービス/マネージドサービスとは?

概要 AWSについて学習していたときに出てきた、マネージドサービス/アンマネージサービスについて理解するのに少し混乱したためまとめてみた。 参考書籍 ゼロからわかる Amazon Web Services超入門 はじめてのクラウド かんたんIT基礎講座 マネージドサービス/アンマネージサービス マネージドサービスとは 特定の目的の設定が完了した状態のサービスを貸し出すサービスをマネージドサービスという。 代表的なものとしてS3などが挙げられる アンマネージドサービスとは 素のままのサーバーを貸し出すサービスをアンマネージドサービスという。 代表的なものとしてEC2などが挙げられる 責任分界点 マネージドサービスとアンマネージドサービスでは、どこまでを自分で担当するか、どこまでクラウドサービスが担当してくれるかという違いもある この担当の分岐点のことを責任分界点という 責任分界点がクラウドサービス側に寄っているものほど保守運用をクラウドサービスに任せられる = 運用の手間を軽減できるということになる。 SaaS、PaaS、IaaS クラウドを語るとき、「どこまでの機能が提供されるのか」を分ける用語としてSaaS、PaaS、IaaSという3つの言葉がよく使われる。 SaaS ソフトウェアの機能がサービスとして提供されるもの。 多くのマネージドサービスがこれに相当し、利用者は保守・運用の一切を任せることができる。 PaaS アプリケーションを実行するためのプラットフォームを提供するもの。 IaaS ネットワークや仮想的なサーバーなど、インフラ部分を提供するもの。 アンマネージドサービスがこれに相当し、利用者は全体の保守・管理をする必要がある。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【AWS】アンマネージドサービス/マネージドサービスとは?【初心者】

概要 AWSについて学習していたときに出てきた、マネージドサービス/アンマネージサービスについて理解するのに少し混乱したためまとめてみた。 参考書籍 ゼロからわかる Amazon Web Services超入門 はじめてのクラウド かんたんIT基礎講座 マネージドサービス/アンマネージサービス マネージドサービスとは 特定の目的の設定が完了した状態のサービスを貸し出すサービスをマネージドサービスという。 代表的なものとしてS3などが挙げられる アンマネージドサービスとは 素のままのサーバーを貸し出すサービスをアンマネージドサービスという。 代表的なものとしてEC2などが挙げられる 責任分界点 マネージドサービスとアンマネージドサービスでは、どこまでを自分で担当するか、どこまでクラウドサービスが担当してくれるかという違いもある この担当の分岐点のことを責任分界点という 責任分界点がクラウドサービス側に寄っているものほど保守運用をクラウドサービスに任せられる = 運用の手間を軽減できるということになる。 SaaS、PaaS、IaaS クラウドを語るとき、「どこまでの機能が提供されるのか」を分ける用語としてSaaS、PaaS、IaaSという3つの言葉がよく使われる。 SaaS ソフトウェアの機能がサービスとして提供されるもの。 多くのマネージドサービスがこれに相当し、利用者は保守・運用の一切を任せることができる。 PaaS アプリケーションを実行するためのプラットフォームを提供するもの。 IaaS ネットワークや仮想的なサーバーなど、インフラ部分を提供するもの。 アンマネージドサービスがこれに相当し、利用者は全体の保守・管理をする必要がある。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【AWS】マネージドサービス/アンマネージドサービスとは?【初心者】

概要 AWSについて学習していたときに出てきた、マネージドサービス/アンマネージサービスについて理解するのに少し混乱したためまとめてみた。 参考書籍 ゼロからわかる Amazon Web Services超入門 はじめてのクラウド かんたんIT基礎講座 マネージドサービス/アンマネージサービス マネージドサービスとは 特定の目的の設定が完了した状態のサービスを貸し出すサービスをマネージドサービスという。 代表的なものとしてS3などが挙げられる アンマネージドサービスとは 素のままのサーバーを貸し出すサービスをアンマネージドサービスという。 代表的なものとしてEC2などが挙げられる 責任分界点 マネージドサービスとアンマネージドサービスでは、どこまでを自分で担当するか、どこまでクラウドサービスが担当してくれるかという違いもある この担当の分岐点のことを責任分界点という 責任分界点がクラウドサービス側に寄っているものほど保守運用をクラウドサービスに任せられる = 運用の手間を軽減できるということになる。 SaaS、PaaS、IaaS クラウドを語るとき、「どこまでの機能が提供されるのか」を分ける用語としてSaaS、PaaS、IaaSという3つの言葉がよく使われる。 SaaS ソフトウェアの機能がサービスとして提供されるもの。 多くのマネージドサービスがこれに相当し、利用者は保守・運用の一切を任せることができる。 PaaS アプリケーションを実行するためのプラットフォームを提供するもの。 IaaS ネットワークや仮想的なサーバーなど、インフラ部分を提供するもの。 アンマネージドサービスがこれに相当し、利用者は全体の保守・管理をする必要がある。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

API GatewayのOutput

はじめに API Gatewayの勉強のoutputように書きます。また今回は、API Gatewayのみで行っているのでlambdaは今回使っていません。見たら実践できるようにできるだけ書きますので、もしよければフォローお願いします! 前提として python を基本コードとして使います AWS マネジメントコンソールを登録している前提で始めます API Gatewayを製作する AWSのマネジメントコンソール画面に行き、検索バーから「API Gateway」を選択します。そして、サンプルAPIを作成します。設定は、以下のようにし、初めのAPIタイプは、REST APIを選んでください。 その後、「アクション」を押して、「リソースの作成」し、リソース名は任意で大丈夫です。同様に「メソッドの作成」から「GET」選び、統合タイプを、「Mock」を選択します。 次に、GETメソッドの実行を行います。 「統合レスポンス」を選択し、「マッピングテンプレート」の「application/json」に以下のコードを入力します。 { "statusCode": 200, "body" : { { "report_id": 6, "report_title": "おはようございます" } } } この状態で、「メソッドの実行」に戻り「テスト」を行います。以下が、実行結果です。 Mockとは Mockとは、一言でいうとテストに必要な部品の値を擬似的に設定するものです。 今回は、テストプレイですので、Mockを使います。 デプロイを実行する 次は、デプロイしていきます。設定は、以下のようにします。するとurlが作成されます。 作成したurlを検索すると、コードの内容が出力できます。 以上でデプロイ成功です! 今回の流れの概要
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS Lambda内Lambdaの呼び出しで Invalid type for parameter Payload

Invalid type for parameter Payload AWS Lambda内でLambdaを非同期で呼び出そうとして 以下のような呼び出しでエラー発生。 directive = { 'target': 'hogehoge', 'set': 'mogemoge' } response = boto3.client('lambda').invoke( FunctionName='hogehoge-actions-reportstate', InvocationType='Event', Payload=directive ) 原因はPayloadで渡す変数「directive」をdictで渡していたこと。json.dumps()で変換後に渡すことで解決。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

S3に5GBを超えるファイルをアップロードする際は名前が半角英数字のみになっているかチェックすべし

ブラウザ上のS3コンソールに「セミナー動画1.mp4」という名前の13GBの動画ファイルをアップロードしようとしたところ、アップロードエラーが発生しました。 ライフストリームサイクルを設定してという表示がされるが、 設定後再試行するも変化なし。 試行錯誤したところ、原因は名前にマルチバイト文字を使用していたからでした。 「movie_1.mq4」に変更して再試行したところアップロードできました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

.NET Core Serverless WebAppをMacからAWSへデプロイ

概要 タイトル通りですが、.NET Core Serverless WebAppをMacからAWSへデプロイします。 WindowsでしたらAWS ToolKit for VisualStudioがあるのでGUIでポチポチできますが、 AWS ToolKit for VisualStudio(Mac ver)が無いので、 Macからデプロイするためにはコマンドでなんとかかんとかがんばる必要があります。 必要ツールインストール それではまず事前準備で必要なツールをインストールします。 ●AWS CLI AWSへデプロイするのでもちろん必要になってきます。 brew install awscli ●.NETアプリケーションを操作するために必要です。 brew install dotnet-sdk ●Amazon.Lambda.Templates テンプレートからプロジェクトを作成することができます。 便利なので入れておきます。 dotnet new -i Amazon.Lambda.Templates ●Amazon.Lambda.Tools .NET Core Global Tool .NETアプリケーションをAWS Lambdaへデプロイするために必要です。 dotnet tool install -g Amazon.Lambda.Tools AWS CLIプロファイル設定 続いてAWS CLIのプロファイル設定を行います。 ターミナルからAWSへデプロイする際に使用するAWS Accesskey等の設定です。 あらかじめAWSでIAMを作成しておきます。 ●プロファイル作成 aws configure --profile {プロファイル名} # 例: aws configure --profile user1 AWS Access Key ID: {設定したIAMから払い出されたキーをコピー} AWS Secret Access Key: {同上} Default region name: {東京の場合は ap-northeast-1 を指定} Default output format: JSON プロジェクト作成 それでは準備が整ったので、プロジェクトを作成します。 Amazon.Lambda.Templatesをインストールしたので、テンプレートから作成します。 プロジェクトを作成したい任意の場所で以下コマンドを実行します。 ※WindowsのVisualStudioだとあらかじめ組み込まれています。 dotnet new serverless.AspNetCoreWebApp --name {Lambda関数名} --region {リージョン名} --profile {プロファイル名} # 例: dotnet new serverless.AspNetCoreWebApp --name MyWebApp --region ap-northeast-1 --profile user1 少し待つと、プロジェクトフォルダが作成されます。 VisualStudio for Macで.csprojを開いてそのままデバッグするとサンプルページが表示されます。 デプロイ ではプロジェクトの作成ができたのでいよいいよAWSへデプロイします。 ただ、その前に自動生成されたプロジェクト内の「aws-lambda-tools-defaults.json」ファイルにアップロード先S3バケット名とCloudFormationのスタック名を追記しておきます。 { "Information": [ "This file provides default values for the deployment wizard inside Visual Studio and the AWS Lambda commands added to the .NET Core CLI.", "To learn more about the Lambda commands with the .NET Core CLI execute the following command at the command line in the project root directory.", "dotnet lambda help", "All the command line options for the Lambda command can be specified in this file." ], "profile": "user1", "region": "ap-northeast-1", "configuration": "Release", "framework": "netcoreapp3.1", "s3-prefix": "MyAspNetApp/", "template": "serverless.template", "template-parameters": "", "s3-bucket": {あらかじめAWSにS3を作成しておく必要があります。}, "stack-name": {AWS CloudFormationのスタック名を指定します。S3と違い自動作成してくれます。} } それでは、準備万端なのでデプロイコマンドを実行します。 ※以下コマンドは.csprojと同階層で実行して下さい。 dotnet lambda deploy-serverless 無事デプロイが完了すると、こんな感じでデプロイ先URLが表示されます。 ApiURL https://xxxxxxx.execute-api.ap-northeast-1.amazonaws.com/Prod/ やった!お疲れ様でした!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS EC2 インスタンスのメタデータを取得する

初めに インスタンス内部からインスタンスIDを知りたいことがあったのでPythonで取得するコードを書いた。 インスタンスのメタデータとは インスタンスIDやAMIのIDなどのインスタンス自身の情報のこと。インスタンスからcurl http://169.254.169.254/latest/meta-data/ を実行することで取得できる。 最初にシェルで取得しようとして以下のコードを書いたが、うまくいかないことがわかった。理由は実行結果を見るとわかるように、パスが深いところがあるため。例えば、identity-credentials/: ec2/ は、さらにcurl http://169.254.169.254/latest/meta-data/identity-credentials/ec2を実行しなければidentity-credentials(トークンなどの認証情報)の値は返ってこない。 data=`curl -s http://169.254.169.254/latest/meta-data/` echo $data | sed 's/ /\n/g' | while read line do echo "$line:" `curl -s http://169.254.169.254/latest/meta-data/$line` done 実行結果(値は少し変えている) ami-id: ami-06098fd00463352b6 ami-launch-index: 0 ami-manifest-path: (unknown) block-device-mapping/: ami root events/: maintenance/ hibernation/: configured hostname: ip-172-31-38-1.ap-northeast-1.compute.internal identity-credentials/: ec2/ instance-action: none instance-id: i-0d25432b11k20tc94 instance-life-cycle: on-demand instance-type: t2.micro local-hostname: ip-172-31-38-1.ap-northeast-1.compute.internal local-ipv4: 172.31.38.1 mac: 04:3r:66:3d:76:18 metrics/: vhostmd network/: interfaces/ placement/: availability-zone availability-zone-id region profile: default-hvm public-hostname: ec2-13-125-99-211.ap-northeast-1.compute.amazonaws.com public-ipv4: 13.125.99.211 public-keys/: 0=key reservation-id: r-0e1bbhj32u77445y7 security-groups: default services/: domain partition この問題に対処するため、Pythonで再帰的にcurlを実行することにした。 つまり、以下の処理を再帰的に行う。 認証情報がほしい ↓ curl http://169.254.169.254/latest/meta-data/ ↓ curl http://169.254.169.254/latest/meta-data/identity-credentials/ ↓ curl http://169.254.169.254/latest/meta-data/identity-credentials/ec2 ↓ 認証情報取得 コード 実際に書いたコードがこちら。 import subprocess def run_curl(url): args = ['curl', '-s', url] res = subprocess.run(args, encoding='utf-8', stdout=subprocess.PIPE) return res def res_analysis(res): for path in res.stdout.split('\n'): if '/' in path: res_analysis(run_curl(res.args[2] + path)) else: print('{}: {}'.format(path, run_curl(res.args[2] + path).stdout)) if __name__ == "__main__": url = 'http://169.254.169.254/latest/meta-data/' res_analysis(run_curl(url)) 解説 Pythonでcurlコマンドを実行するため、subprocessをインポート。encodingを指定して、バイナリ文字をutf-8に変換する。標準出力を変数に格納するためにstdout=subprocess.PIPEを指定する。 対話モードで実行した場合 >>> subprocess.run(args, encoding='utf-8', stdout=subprocess.PIPE) CompletedProcess(args=['curl', '-s', 'http://169.254.169.254/latest/meta-data/'], returncode=0, stdout='ami-id\nami-launch-index\nami-manifest-path\nblock-device-mapping/\nevents/\nhibernation/\nhostname\nidentity-credentials/\ninstance-action\ninstance-id\ninstance-life-cycle\ninstance-type\nlocal-hostname\nlocal-ipv4\nmac\nmetrics/\nnetwork/\nplacement/\nprofile\npublic-hostname\npublic-ipv4\npublic-keys/\nreservation-id\nsecurity-groups\nservices/') 以下の条件分岐だが、curlでパスが返ってきた場合とIDなどの値が返ってきた場合で処理を分けるために使用している。パスが返ってきた場合、URLにそのパスを追加して再度curlを実行する。値が返ってきた場合出力する。 if '/' in path: res_analysis(run_curl(res.args[2] + path)) else: print('{}: {}'.format(path, run_curl(res.args[2] + path).stdout)) 書いていて一番気持ち悪いと思ったが、現状これが一番簡潔なのかなと思っているのが以下のコード。再利用のためsubprocess.runは1つのメソッドとして分けたかった。その結果、合成関数みたいになってしまった。 res_analysis(run_curl(url)) 実行結果(値は少し変えている。...の部分は省略していることを表す。) ami-id: ami-06098fd00463352b6 ami-launch-index: 0 ami-manifest-path: (unknown) ami: /dev/xvda root: /dev/xvda history: [] scheduled: [] configured: false hostname: ip-172-31-38-1.ap-northeast-1.compute.internal info: { "Code" : "Success", "LastUpdated" : "2021-04-17T07:01:28Z", "AccountId" : "012..." } ec2-instance: { "Code" : "Success", "LastUpdated" : "2021-04-17T07:02:09Z", "Type" : "AWS-HMAC", "AccessKeyId" : "ASIA...", "SecretAccessKey" : "OL...", "Token" : "IQ...", "Expiration" : "2021-04-17T13:07:15Z" } instance-action: none instance-id: i-0d25432b11k20tc94 instance-life-cycle: on-demand instance-type: t2.micro local-hostname: ip-172-31-38-1.ap-northeast-1.compute.internal local-ipv4: 172.31.38.1 mac: 06:2f:79:4c:69:19 vhostmd: <?xml version="1.0" encoding="UTF-8"?> device-number: 0 interface-id: eni-6y01019922ooo176528 13.125.99.211: 172.31.38.1 local-hostname: ip-172-31-38-1.ap-northeast-1.compute.internal local-ipv4s: 172.31.38.1 mac: 04:3r:66:3d:76:18 owner-id: 012... public-hostname: ec2-13-125-99-211.ap-northeast-1.compute.amazonaws.com public-ipv4s: 13.125.99.211 security-group-ids: sg-b78p90r2 security-groups: default subnet-id: subnet-e6g098l4 subnet-ipv4-cidr-block: 172.31.32.0/20 vpc-id: vpc-c4b1weee vpc-ipv4-cidr-block: 172.31.0.0/16 vpc-ipv4-cidr-blocks: 172.31.0.0/16 availability-zone: ap-northeast-1a availability-zone-id: apne1-az4 region: ap-northeast-1 profile: default-hvm public-hostname: ec2-13-125-99-211.ap-northeast-1.compute.amazonaws.com public-ipv4: 13.125.99.211 0=key: <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "..." "http://www..."> <html xmlns="http://www..." xml:lang="en" lang="en"> <head> <title>404 - Not Found</title> </head> <body> <h1>404 - Not Found</h1> </body> </html> reservation-id: r-0e1bbhj32u77445y7 security-groups: default domain: amazonaws.com partition: aws 参考記事
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWSのlambdaを使って、翻訳機能を実装してみた

はじめに 最近本格的にAWSの勉強を始めたので、そのoutputのために書きました。 同じようにAWSの初学者の方の助けになると幸いです。 前提として python を基本コードとして使います AWS マネジメントコンソールを登録している前提で始めます 関数の作成 まずAWS マネジメントコンソールを開き、上の検索バーのところで「lambda」検索します。 下の画面に行くと、オレンジ色の「関数の作成」を選びます。 その後の設定は、以下のようにします。 関数が、作成されると次にコードの部分に以下の内容をペーストしてください。 これでソースコードは完成です! import json import boto3 translate = boto3.client('translate') def lambda_handler(event, context): input_text = "おはよう" response = translate.translate_text( Text= input_text , SourceLanguageCode='ja', TargetLanguageCode='en' ) output_text = response.get('TranslatedText') return { 'statusCode': 200, 'body3': json.dumps({ 'output_text' : output_text }) } 次に「TEST」クリックして、出力してみます。 すると、TranslateText operation の権限がない状態でその関数を使ったためエラーが出ていることが分かります。なので、次に権限の付与を行います。 権限を与える 設定からアクセス権限を選択し、実行ロール中の付与を与えたい関数を選択します。 そして、アクセス権限の、「ポリシーをアタッチします」を押してください。そこの検索バーから「Translate Full Acess」を選択します。すると付与成功です! ちなみに先ほどのこの部分で確認できます。 以下が完成結果です。 今回の概要
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【AWS】アベイラビリティゾーン(AZ)とエッジロケーションを理解する

プログラミング勉強日記 2021年4月17日 アベイラビリティゾーン(AZ)とは  リージョンの中に複数の独立したインフラ拠点が存在し、それをアベイラビリティゾーン(AZ)という。  1つのリージョンには2つ以上のAZが存在する。同じリージョン内のAZ同士は低レイテンシーのリンクで接続されている。サービスによっては、AZをまたいで設置できるものもあれば、AZ内でしか使えないものもある。  AZが物理的なデータセンターになっていて、1つのデータセンターには数千のサーバーを収容している。  AZにある物理的インフラを仮想化してユーザにインフラ機能をパーツとして分けて提供している。なので、1つのAZでも複数のEC2インスタンスに分けられる。  1つのAZのみでAWSサービスを使用するとデータセンターの停止によってサービスが停止する可能性もある。そのため、1つのリージョンに2つのAZから使用するのを推奨している。複数のAZでまたぐと物理的な耐久性が向上する。しかし、1つのAZでしか共有されない設定が多くあること、多くはAZ間で連携するための設定が必要なことから、システム間の連携や共有が制限されてしまうので注意が必要。 エッジロケーションとは  エッジロケーションは、キャッシュデータなどを利用するときにさらに小さなエンドポイントになる拠点のこと。  エッジロケーションを使ってコンテンツ配信やトラフィック制御のルーティングを効率的に実施することができる。ユーザの近くに多くあるほど効率的に行えるので、世界中に200か所以上もある最も数の多いロケーションである。  CloudFrontやLambdaエッジ、Route53のDNS機能がエッジロケーションを使って実行されている。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

S3とは

概念 S3(Simple Strage Service) オブジェクトストレージ ・HTTPSのプロトコルで通信する ・他ストレージ(EBS, EFS)より読み書きが遅い ・多数の大きなファイルを取り扱うのに向いている ・APIを使用した開発が容易 ・安価で耐久性が高い   1GBあたり約3円(クラスによって変わる) ・保存容量に上限なし   一つのデータファイルが5TBまで ・自動で冗長化してデータを保存する   格納されたオブジェクトを同一リージョン内の複数のデータセンターに   同一オブジェクトが分散されて格納されます。 ルール ※名称が独特な点に注意 セキュリティ S3作成後、デフォルトではアカウント管理者及びルートユーザーのみアクセス可 S3のバケットに直接IAMポリシーを埋め込み、権限管理ができる(バケットポリシー、リソースベースのポリシー) → 特定IPアドレスのみ許可などの接続制限 ここでは Principal=全てのユーザーが Action=s3のバケットを参照できるリスト Resource=対象のバケットを指定 Condition=接続できるIPアドレスが"12.34.56.78"のみに制限している 頭文字をとってPARC(パーク)を指定することでS3のアクセス権を細かく制限できる IAMポリシーの詳細 ACLを設定できる(アカウント単位、バケット単位、オブジェクト単位) アカウント単位で世界中からの通信をブロックできる機能 画像の例では全部オフになっているが、オンにするとブロックが起動する。 上から ・新規にファイルを公開状態でアップロードされることを防止する ・既に公開設定にあるバケットやファイルを非公開状態で上書きする(設定を上書きする)   例: 既に運用していてどのオブジェクト、どのバケットが公開状態かわからないので一括で非公開状態にしたい時役立つ ・リソースベースのポリシーを編集時公開設定なるのを防止する機能 ・リソースベースのポリシーで公開状態になったとしてもアクセスを禁止する事ができる。また、他アカウントからのサクセスも禁止する この大まかな4つの設定をバケット単位でも設定できる オブジェクト単位でパブリックからのアクセスに対する読み取りや、ACL設定の読み込み・書き込みの権限を付与するか設定できる Webホスティング機能 各オブジェクトに一意のHTTPURLが関連付けられる 例: index.htmlという名前のhtmlファイルをオブジェクトとしてS3バケットを配置し、パブリックに読み取り権限を付与してホスティング機能をONにすることで、エンドポイントURLというのが割り振られるのでユーザーはこのエンドポイントURLに対してアクセスする事で直接Webページを参照できる。 イベント通知機能 S3にファイルを置いたことをトリガーとし、様々なAWSサービスと連携して呼び出せる機能。 ファイルをアップデートした時だけでなく、削除した時をトリガーに設定したりイベントの検知は様々あります。 ストレージクラス どの程度使用するかの使用頻度で最適なクラスが分けられている。 デフォルトだと標準クラスに割り当てられる バージョニング バケット単位で有効にすると誤ってオブジェクトを削除しても、簡単に復元できる機能 実際には完全に削除されず、S3によって削除マーカーというものが付与されて削除されない仕組みとなっている。 バージョニング機能はデフォルトではオフとなっている。 ライフサイクルマネジメント 期間を指定して、その期間を経過したらストレージクラスを移動するという、期間によってのアクションを設定できる ライフサイクルポリシーの設定はバケット内のオブジェクトのライフサイクルを管理できる。オブジェクトをS3ストレージからAmazon Glacierへ移動するのに使用される機能は、そのグループに対してルールを設定する。 Amazon Glacier 長期間バックアップに向いているサービスで、低料金でデータを安全にアーカイブすることのできるストレージサービスだ。オンプレや他サービスに比べて非常に低コスト(1ヶ月, 1Gbあたり$0.004)である。アーカイブから復元できるオプションが3種類あり、数分から数時間で復元可能となる。 コスト ※転送料はinは無料、outは有料! ※GETやPOSTなどリクエストの種類によって単価が変わる(DELETEは無料)! 参考 この記事はAWS初学者を導く体系的な動画学習サービス 「AWS CloudTech」の課題カリキュラムで作成しました。 https://aws-cloud-tech.com
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS EC2インスタンスを起動してSSH接続するまで

環境 MacOS BigSur 11.2.3 事前に アカウント作成などは以下を参考ください。 *AWSのアカウント作成 *AWSアカウントの初期設定まとめ 1.VPCを作成 コンソール画面の検索窓からVPCの画面へ移動します 名前はMyVPC、IPv4は10.0.0.0/21で作成します。 2.サブネットを作成 パブリックサブネット作成 名前はPublicSubnet1、 IPv4は10.0.0.0/24で作成します。 アベイラビリティゾーンは1aを選択です。 続いてプライベートサブネットを作成 名前はPrivateSubnet1、IPv4は10.0.2.0/24で作成します。 アベイラビリティゾーンは1aを選択です。 3.EC2を作成 検索窓からEC2を検索して作成していきます インスタンスを起動します インスタンスタイプは、 Amazon Linux 2 AMI (HVM), SSD Volume Type を選択 t2.micro無料利用枠の対象を選択 続いてネットワークを設定します。 先ほど作成したMyVPC1、PublicSubnet1、自動割り当ては有効を選択します。 次のステップのストレージはデフォルトで次のステップに進みます。 Nameタグを追加し、WebServer1と付けます 続いてセキュリティグループを以下の値で新規作成します。 セキュリティグループ名:WebSG1 説明:WebSG1 ルールを追加します。 初期でSSH 80番ポートが許可されていますが、 HTTP 80番ポート、ソースは0.0.0.0/0, ::/0全てから許可として追加します。 内容を確認して問題なければ、起動します。 起動の際にキーペアの作成画面になるので、ここでは新規作成を選択します。 名前はMyKeyPare1として、キーペアはローカルの安全なとことにダウンロードして保管してください。 キーペアを保管したらインスタンスを起動させます。 インターネットゲートウェイとルートテーブルを作成 EC2がインターネットと接続するため必要です。 インターネットゲートウェイを作成 VPCを作成した際のコンソール画面から作成していきます。 名前タグはMy-Internet-GW1として作成していきます 作成したらVPCにアタッチします。 すでに作成したVPCを選択します。 ルートテーブルを作成 サブネットからPublicSubnet1を選択してルートテーブルのリンクに飛びます。 ルートの編集に進みます VPC以外はインターネットゲートウェイに向けるルートを追加します。 送信先は0.0.0.0/0 ターゲットは作成したゲートウェイを選択してルートを保存します。 作成したインスタンスにSSH接続 接続前に、作成したキーペアの権限を変更しないと権限に関しての警告が出て進めないので、 あらかじめファイルの権限を変更します。 キーペアを保存したディレクトリまで移動して以下コマンドで変更が可能です。 ターミナル chmod 400 MyKeyPare1.pem 続いて以下コマンドでSSH接続します。 EC2パブリックIPv4アドレスはインスタンスのコンソール画面から確認できます。 SSHコマンドは、-iオプションで秘密鍵(作成したキー)を指定、@以前はユーザーを指定しています。 ターミナル ssh -i MyKeyPare1.pem ec2-user@EC2パブリックIPv4アドレス ターミナルで以下が表示されれば接続成功です。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS Beanstalk で humhub を運用開始できるか試そうと思ったがやめた。

はじめに phpのWEBアプリ(?)、Humhubを使うにあたり、AmazonWebService(AWS)のうち、Beanstalkでデプロイできるか試してみようかと思ったが見送ることにした。参考にした情報は、次のとおり。 AWS Elastic Beanstalk 開発者ガイド プラットフォームチュートリアル > チュートリアル- HA Wordpress デプロイ前に、それができたとして考えたメリット、デメリットは以下のとおりかな。 メリット 「プリケーションを実行しているインフラストラクチャについて知識を得なくても、AWS クラウドでアプリケーションのデプロイと管理を簡単に行うことができます。」AWSドキュメントより。要は、バックエンドのWEBサーバーやらDBサーバーの構築・管理をお手軽にすることができるらしい。 デメリット ソースの改変のたびに、全データをZipに圧縮、beanstalk に登録って操作をしなければならない。はっきり言って開発担当が毎日ソース書き換えるような環境には不向き。githubと連携できるHerokuのほうがそういう用途に向いてるのかも。 今回の結論 現在、ソースの書き換えを複数人で同時に頻繁に行っているため、Beanstalkでの運用は不向きと判断した。 参考サイト
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

S3 CLIと標準入出力

はじめに これまで、S3にデータを入れるときは手元でCSV等を作ってアップロードしたり、逆にS3内のデータを参照するときにはダウンロードしてから参照していたりしていました。 が、(今更ですが)最近になって標準入出力でやりとりできることを知ったので自分用のメモとして残すための記事です。 標準出力への出力 標準出力へ出力できるとパイプが使えるので、色々便利ですよね。 aws s3 cp s3://xxx-bucket/test.csv - 圧縮ファイルもzcatで。 aws s3 cp s3://xxx-bucket/test.csv.gz - | zcat ただ、--recursiveを指定して複数ファイルを標準出力に出すことはできないようです。 標準入力からS3へデータ作成 S3のオブジェクトがこれで作れると知ったときはちょっとした驚きでした。 echo hogehoge | aws s3 - cp s3://xxx-bucket/test2.csv
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[AWS]構築メモ

VPC Virtual Private Cloudの略で仮想ネットワーク内でAWSのリソースを動作させられる。 AWSのVPCって何?メリットや使えるシーンなど徹底解説! サブネット インターネットゲートウェイが設定されており、外部からのアクセスが可能かどうかでパブリックとプライベートが決定する。 プライベート: データベース パブリック : アプリ 0.0.0.0/0 : 全ての送信先 → パブリックサブネット 0.0.0.0/0 以外       → プライベートサブネット 【AWS】パブリックサブネットとプライベートサブネットの違いとは Elastic IP EC2の停止と起動の際に毎回パブリックIPアドレスが変更されてしまいログインすることができない。そこでElasticIPではIPアドレスを作成してEC2に紐付けることでIPアドレスの変更するのを防ぐことが出来る。 インターネットゲートウェイ インターネットゲートウェイとは簡単に言うとvpcの外部からのアクセスを可能にするもので VPCの削除 削除の際にエラーが出たとき 【AWS VPC】依存関係エラーが発生した場合のデタッチ・削除の仕方     EC2 Amazon Elastic Compute Cloudのことで、awsのか総サーバーサイド。 osやcpuやssd,nicが対応している。 os : ami cpu : インスタンスタイプ ssd : ebs nic : ami いろんなosが借りられるよってこと。 マーケットプレイス : あらかじめパッケージが入っているami (wordpressがインストール済みなど) SSHログイン 以下の手順でログインを実装することで強固なSecurityを実現。 ① 画像はSSH通信って、結局何してるの?より引用 Rails Appのデプロイ手順 ・ECSのデプロイ 初心者でもできる! ECS × ECR × CircleCIでRailsアプリケーションをコンテナデプロイ
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Amazon linux2にCMLを入れてみる

初めに CiscoのCML2をクラウド上で動かせるか試すため、Centos7にCML2のインストールを試みる 環境 $ cat /etc/os-release NAME="Amazon Linux" VERSION="2" ID="amzn" ID_LIKE="centos rhel fedora" VERSION_ID="2" PRETTY_NAME="Amazon Linux 2" ANSI_COLOR="0;33" CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2" HOME_URL="https://amazonlinux.com/" インストール パスワードの設定 デフォルトユーザーの「ec2-user」にパスワードが設定されていないため、パスワード設定 $ sudo su - $ passwd ec2-user GUI環境の設定 公式通りにMATEデスクトップとTigerVNCをインストール $ sudo amazon-linux-extras install mate-desktop1.x $ sudo bash -c 'echo PREFERRED=/usr/bin/mate-session > /etc/sysconfig/desktop' $ sudo yum install tigervnc-server $ vncpasswd 起動時のサービス自動起動を有効化 $ sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@.service $ sudo sed -i 's/<USER>/ec2-user/' /etc/systemd/system/vncserver@.service $ sudo systemctl daemon-reload $ sudo systemctl enable vncserver@:1 $ sudo systemctl start vncserver@:1 xstartupへのMATE実行コマンドの追加(灰色画面の防止) ~/.vnc/xstartup exec mate-session systemd マネージャー再ロードとサービスの再起動 $ sudo systemctl daemon-reload $ sudo systemctl restart vncserver@:1 日本語の設定 インストール $ sudo yum install ibus-kkc $ sudo yum install google-noto-sans-japanese-fonts ibusの設定をbashrcに記載します。 ~/.bashrc export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibus ibus-daemon -drx ロケールの設定 sudo localectl set-locale LANG=ja_JP.UTF-8 reboot google chromeのインストール リポジトリ登録 /etc/yum.repos.d/google-chrome.repo [google-chrome] name=google-chrome baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch enabled=1 gpgcheck=1 gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub インストール $ sudo yum update $ sudo yum install google-chrome-stable GUI接続の確認 VNCを使うため、SSHのポートフォワーディングを行う インスタンスのセキュリティグループでインバウンドにVNC用のポートの許可を追加 SSHで再度接続しなおす # ssh -L 5901:localhost:5901 -i PEM_FILE ec2-user@INSTANCE_IP 接続後、Finder→移動→サーバへ接続 vnc://INSTANCE_IP:5901 VMware playerのインストール コンパイラとカーネルモジュールのインストール # yum -y install gcc # yum -y install kernel-devel Workstation Playerのダウンロード 展開 $ sudo sh VMware-Player-16.1.1-17801498.x86_64.bundle CMLのソフトウェアをダウンロード cml2_controller-2.0.0-13.el8.x86_64-93.ova refplat-20200409-fcs.iso VMware playerへインポート Open a Virtual Machine OVAファイルの選択 起動前の設定変更 ISOファイルの指定 ※リソースは環境に応じて Power On アプリ(VMware player)ごと落ちる!! 最後に 上記の流れでCMLのインストールを試みましたが、仮想マシンを立ち上げられずに終わりました。 Ubuntuのインスタンスでも同様だったので、仮想マシンのネストでは無理なのかな。。 原因調査は後日。。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS Glue とは

勉強前イメージ glueってのり? 何かと何かを繋げる的な・・・? 調査 AWS Glue とは データの分類、クリーニング、加工を行う、 フルマネージドなETL(Extract(抽出)/Transform(変換)/Load(ロード))サービスです。 分析用のデータ準備やロードを簡単に行うことができ、日々のETL処理を自動化・サーバレス化が可能になります。 データカタログに保存されると、データがすぐ検索でき、クエリ可能にもなるのが特徴です。 メリット 迅速なデータ統合 Glueで抽出、クリーニング、正規化、結合、読み込み、ワークフローの実行など行うことができ、 分析までにかかる時間を数ヶ月から数分に短縮できます 大規模なデータ統合を自動化 いくつものETLジョブを実行・管理ができ、 SQLを使用して複数のデータを結合できます。 サーバー管理が不要 フルマネージドサービスなのでサーバレス環境で実行できます。 用語 データストア s3やDynamoDB,RDS等 データソース Glueに入力するためのデータストア データターゲット Glueに出力するためのデータストア データカタログ データを分析するための領域 クローラー いろんなデータストアからデータカタログにデータを集約する ジョブ データカタログ内でデータをELTジョブを実施する 勉強後イメージ 分析用のデータを連携して自動的に分析してくれる・・・ってサービス? 触ってみないと実際にはきちんと理解できない。。 一歩がむずかしい 参考 AWS Glue AWS再入門ブログリレー AWS Glue編
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

EC2の起動時にPythonのスクリプトを実行

やりたいこと S3へのファイルアップロードをトリガーに、AWS上でかなり重たい処理(動画処理)をさせたい しかし、LambdaだとTimeOutやメモリ不足が心配 そこで、LambdaでEC2を起動させて、起動時にPythonのスクリプトを自動で実行させる ※Pythonに限らず何でも実行できます。 ファイル構造 /home/ec2-user/ └── environment ├── main.py └── start_function.sh /etc/init.d/ └── start (任意)ホームディレクトリ(/home/ec2-user)にenvironmentというディレクトリを作る 自動実行させたいpythonスクリプトmain.py pythonスクリプトを実行させるためのシェルスクリプトstart_function.sh EC2の起動時にシェルスクリプトを実行させるためのstart ※ファイル名やディレクトリ名は自分で好きに変えてください 本編 pythonスクリプトを実行させるshellスクリプト sudo vim /home/ec2-user/environment/start_function.sh 以下をコピペ #!/bin/bash nohup /usr/local/src/pyenv/shims/python /home/ec2-user/environment/main.py & exit 0 起動時にshellスクリプトを実行させるためのファイル sudo vim /etc/init.d/start 以下をコピペ #!/bin/sh # chkconfig: 345 99 10 # description: start_function shell case "$1" in start) bash /home/ec2-user/environment/start_function.sh ;; stop) /usr/bin/kill python echo "stop!" ;; *) break ;; esac 権限の変更と自動起動への登録 cd /etc/init.d sudo chmod 775 start sudo chkconfig --add start sudo chkconfig start on sudo chkconfig --list start 以下のような出力が出れば完成。 start 0:off 1:off 2:on 3:on 4:on 5:on 6:off
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む