Showing posts with label s3. Show all posts
Showing posts with label s3. Show all posts

Thursday, July 20, 2023

AWS S3 オブジェクトの自動削除方法 | 30日、90日、1年など任意の期間で設定可能

章1:AWS S3についてと自動オブジェクト削除の概要

AWS S3(アマゾン・シンプル・ストレージ・サービス)は、安全性と高いスケーラビリティを備えたオブジェクトストレージサービスであり、データの保存と取得に関するさまざまな機能を提供しています。自動オブジェクト削除は、AWS S3で提供される重要な機能の一つです。

なぜ自動オブジェクト削除が必要なのでしょうか?

データのライフサイクルを管理することは、S3バケットにオブジェクトをホストする際のコストを最適化し、データオブジェクトに関するセキュリティポリシーとの適合性を確保するために必要です。この目的で自動オブジェクト削除機能が利用されます。

自動オブジェクト削除はどのように機能しますか?

AWS管理コンソール、AWS CLI(コマンドラインインターフェース)、SDK(ソフトウェア開発キット)のいずれかを利用して、オブジェクト削除ルールを定義し、S3バケットに適用することができます。ルールが適用されると、S3はルールの基準に一致するオブジェクトの削除操作を自動的に実行します。

次章からは、自動オブジェクト削除を設定するための手順を順を追って説明します。第2章では、AWS管理コンソールを使った削除ルールの設定について説明します。

第2章:AWS管理コンソールを使用して、AWS S3で自動オブジェクト削除を設定する方法

この章では、AWS管理コンソールを使ってAWS S3バケットに自動オブジェクト削除を設定する手順を説明します。以下に示す手順に従って設定を完了させてください。

ステップ1:AWS管理コンソールにログインする

まず、AWS管理コンソールにログインし、S3サービスページに移動します。まだ登録していない場合は、AWSのウェブサイトで無料アカウントを作成できます。

ステップ2:バケットを選択する

S3サービスページから、自動オブジェクト削除を設定するバケットを選択します。

ステップ3:管理タブで「ライフサイクル」を選択する

バケット詳細ページで、「管理」タブを選択し、「ライフサイクル」をクリックします。

ステップ4:ライフサイクルルールを作成する

「ライフサイクルルールを追加」ボタンをクリックし、ルール名、範囲(バケット全体または特定のフォルダ)を入力し、「次へ」ボタンをクリックします。

ステップ5:ルールを定義し作成する

削除ルールを選択し、オブジェクトの削除操作の日付または間隔を設定します。完了したら、「ルールを保存」ボタンをクリックして、ライフサイクルルールを作成します。

これで、AWS管理コンソールを使用してAWS S3バケットに自動オブジェクト削除が設定されました。次章では、AWS CLIを使用して自動オブジェクト削除を設定する方法について説明します。

第3章:AWS CLIを使用してAWS S3で自動オブジェクト削除を設定する方法

AWS CLI(コマンドラインインターフェース)は、コマンドラインを使ってAWSサービスと対話できるツールです。この章では、AWS CLIを使ってS3バケットに自動オブジェクト削除を設定する方法を解説します。

ステップ1:AWS CLIのインストールと設定

まず最初に、公式ドキュメントに従って、AWS CLIをインストールおよび設定します:

https://aws.amazon.com/cli/

ステップ2:バケットオプションの設定

バケット管理コマンドを作成する前に、正しいバケット名が使われていることを確認してください。そして、「ライフサイクル」設定ファイルを作成します。

ステップ3:ライフサイクル設定ファイルの作成

テキストエディタを使って、JSON形式の「ライフサイクル」設定ファイルを作成します。以下の例を参照してください:

{
  "Rules": [
    {
      "Status": "Enabled",
      "Filter": {
        "Prefix": "example-folder/"
      },
      "Expiration": {
        "Days": 30
      },
      "ID": "ExampleRule"
    }
  ]
}

上記のコードで、「example-folder/」を削除したいフォルダ名に、「Days」を削除が行われるまでの日数に置き換えてください。

ステップ4:ライフサイクル設定ファイルを適用する

コマンドプロンプトまたはターミナルで、作成した設定ファイルを適用するには以下のコマンドを実行します:

aws s3api put-bucket-lifecycle-configuration --bucket YOUR-BUCKET-NAME --lifecycle-configuration file://lifecycle.json

「YOUR-BUCKET-NAME」をバケットの実際の名前に、「lifecycle.json」をライフサイクル設定ファイルへのパスに置き換えてください。

コマンドを実行した後、AWS CLIを使用して自動オブジェクト削除の設定が完了します。設定ファイルで指定された内容に従って、S3バケット内のオブジェクトが削除されるようになります。

次の章では、AWS SDKを使用して自動オブジェクト削除を設定する方法について解説します。

第4章:AWS SDKを使用してAWS S3で自動オブジェクト削除を設定する方法

AWS SDK(Software Development Kit)は、さまざまなプログラミング言語をサポートし、AWSサービスと連携するアプリケーションを開発することができます。この章では、PythonのAWS SDKであるBoto3を使用して、S3バケットに自動オブジェクト削除を設定します。

ステップ1:Boto3のインストールと設定

まず、公式ドキュメントを参照して、Boto3をインストールおよび設定します:

https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html

ステップ2:ライフサイクル設定ファイルの作成

PythonコードでJSON形式のライフサイクル設定を生成します。以下の例を参照してください:

lifecycle_configuration = {
    "Rules": [
        {
            "Status": "Enabled",
            "Filter": {
                "Prefix": "example-folder/"
            },
            "Expiration": {
                "Days": 30
            },
            "ID": "ExampleRule"
        }
    ],
}

上記のコードでは、「example-folder/」を削除するフォルダの名前に置き換え、「Days」を削除が行われるまでの日数に置き換えます。

ステップ3:ライフサイクル設定ファイルの適用

Boto3を使用して、ライフサイクル設定ファイルを適用します。以下のサンプルコードを参照してください:

import boto3

def set_lifecycle_configuration(bucket_name, lifecycle_configuration):
    s3 = boto3.client('s3')
    s3.put_bucket_lifecycle_configuration(
        Bucket=bucket_name,
        LifecycleConfiguration=lifecycle_configuration
    )

bucket_name = 'YOUR-BUCKET-NAME'
set_lifecycle_configuration(bucket_name, lifecycle_configuration)

「YOUR-BUCKET-NAME」をバケットの実際の名前に置き換え、サンプルで作成したライフサイクル設定(ファイル)を使用してください。

これで、AWS SDK(具体的にはBoto3)を使用して、AWS S3バケットに自動オブジェクト削除の設定が成功しました。次の章では、自動オブジェクト削除の設定にあたって注意すべき事項について解説します。

第5章:AWS S3で自動オブジェクト削除を設定する際の注意点とベストプラクティス

自動オブジェクト削除の設定には複雑さや潜在的なリスクがあります。そのため、この機能をS3バケットで有効にする場合は、ベストプラクティスを理解し、それに従うことが重要です。自動オブジェクト削除の設定時に従うことができる注意点とベストプラクティスについて議論しましょう。

1. 重要なデータのバックアップ

自動オブジェクト削除を有効にする前に、重要なデータのバックアップがあることを確認してください。誤ってデータが削除された場合、バックアップがないとデータの復旧が非常に困難で費用がかかることがあります。重要なデータに対して、バージョニングとクロスリージョンレプリケーションを実装し、意図しないデータの損失を防ぎましょう。

2. 実装前のテスト

削除ルールを本番環境に適用する前に、制御されたテスト環境でテストを行うことが重要です。こうすることで、誤ったルールを実行してデータが意図せず失われることを防ぐことができます。小さなレプリカデータセットやテスト用のバケットでルールを試し、パフォーマンスや影響を評価しましょう。

3. 削除ルールの監視

定期的に削除ルールを監視し、組織の要件に応じて必要な調整を行います。AWS CloudWatchを使ってS3バケットを監視し、オブジェクトの合計数を追跡して削除が意図した通りに機能していることを確認します。

4. 重要なデータと非重要なデータの混在を避ける

S3バケットを構成する際に、重要なデータと非重要なデータが混在しないようにします。別々に保存して、非重要なデータに対して自動削除を行う際に、誤って重要なデータを削除するリスクを排除しましょう。

5. アラートの設定

Amazon CloudWatchのアラームやSNS通知を使ってアラートを設定し、自動オブジェクト削除ルールに問題がある場合に通知されるようにします。これにより、エラーの速やかな対応や解決が可能となり、誤った削除を修正する際の遅れによる問題を回避できます。

これらのベストプラクティスと注意点を採用することで、データの誤った消失からデータを保護し、S3バケット環境で自動オブジェクト削除がスムーズかつ安全に実行されることを確保できます。

第6章:AWS S3で削除されたオブジェクトの監視と監査

S3バケット内の削除されたオブジェクトを監視し、監査することは、データの整合性、セキュリティ、および規制要件の遵守を確保するために重要です。この章では、AWS S3で削除されたオブジェクトを監視および監査するさまざまな方法について説明します。

1. AWS CloudTrail の利用

AWS CloudTrail は、AWS アカウント内で行われるすべての API コールを記録します。これには、S3 バケット内の削除も含まれます。CloudTrail を有効化および設定することで、発生したすべてのオブジェクト削除イベントを遡ることができ、イベントを開始したユーザー、日付、時刻、使用された API コールなどの詳細情報を確認できます。

2. AWS CloudWatch のログおよびメトリクスの実装

Amazon CloudWatch は、S3 を含むさまざまな AWS サービスのパフォーマンスおよびリソースの使用状況を監視します。CloudWatch と CloudTrail を統合することで、オブジェクト削除イベント専用のログおよびメトリクスを作成でき、ほぼリアルタイムでの監視が可能になり、削除関連の閾値に達した場合にアラートを生成します。

3. ログのクエリに Amazon Athena を使用する

Amazon Athena は、標準 SQL クエリを使って S3 に保存されたデータを直接解析できるインタラクティブなクエリサービスです。Athena を CloudTrail のログと統合することで、オブジェクト削除イベントに対する詳細な分析およびレポートを行うことができ、監査およびコンプライアンスプロセスを支援します。

4. ライフサイクル メトリクスおよびインベントリ レポートの確立

S3 インベントリとオブジェクトレベルのライフサイクルメトリクスを有効にすることで、S3オブジェクトの動作と遷移、削除を含めた情報を取得できます。S3 インベントリは、オブジェクトに関する詳細なレポートを生成し、オブジェクトレベルのライフサイクルメトリクスを使用して、削除済みオブジェクトのデータを視覚化および分析できます。

この章で説明した方法に従うことで、AWS S3 環境内の削除されたオブジェクトを効果的に監視および監査することができ、いつでもコンプライアンスおよびデータの整合性が維持されることを確認できます。

第3章:AWS CLIを使用してAWS S3で自動オブジェクト削除を設定する方法

AWS CLI(コマンドラインインターフェース)は、コマンドラインを使ってAWSサービスと対話できるツールです。この章では、AWS CLIを使ってS3バケットに自動オブジェクト削除を設定する方法を解説します。

ステップ1:AWS CLIのインストールと設定

まず最初に、公式ドキュメントに従って、AWS CLIをインストールおよび設定します:

https://aws.amazon.com/cli/

ステップ2:バケットオプションの設定

バケット管理コマンドを作成する前に、正しいバケット名が使われていることを確認してください。そして、「ライフサイクル」設定ファイルを作成します。

ステップ3:ライフサイクル設定ファイルの作成

テキストエディタを使って、JSON形式の「ライフサイクル」設定ファイルを作成します。以下の例を参照してください:

{
  "Rules": [    {      "Status": "Enabled",      "Filter": {        "Prefix": "example-folder/"      },      "Expiration": {        "Days": 30      },      "ID": "ExampleRule"    }  ]
}

上記のコードで、「example-folder/」を削除したいフォルダ名に、「Days」を削除が行われるまでの日数に置き換えてください。

ステップ4:ライフサイクル設定ファイルを適用する

コマンドプロンプトまたはターミナルで、作成した設定ファイルを適用するには以下のコマンドを実行します:

aws s3api put-bucket-lifecycle-configuration --bucket YOUR-BUCKET-NAME --lifecycle-configuration file://lifecycle.json

「YOUR-BUCKET-NAME」をバケットの実際の名前に、「lifecycle.json」をライフサイクル設定ファイルへのパスに置き換えてください。

コマンドを実行した後、AWS CLIを使用して自動オブジェクト削除の設定が完了します。設定ファイルで指定された内容に従って、S3バケット内のオブジェクトが削除されるようになります。

次の章では、AWS SDKを使用して自動オブジェクト削除を設定する方法について解説します。

第4章:AWS SDKを使用してAWS S3で自動オブジェクト削除を設定する方法

AWS SDK(Software Development Kit)は、さまざまなプログラミング言語をサポートし、AWSサービスと連携するアプリケーションを開発することができます。この章では、PythonのAWS SDKであるBoto3を使用して、S3バケットに自動オブジェクト削除を設定します。

ステップ1:Boto3のインストールと設定

まず、公式ドキュメントを参照して、Boto3をインストールおよび設定します:

https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html

ステップ2:ライフサイクル設定ファイルの作成

PythonコードでJSON形式のライフサイクル設定を生成します。以下の例を参照してください:

lifecycle_configuration = {
    "Rules": [        {            "Status": "Enabled",            "Filter": {                "Prefix": "example-folder/"            },            "Expiration": {                "Days": 30            },            "ID": "ExampleRule"        }    ],
}

上記のコードでは、「example-folder/」を削除するフォルダの名前に置き換え、「Days」を削除が行われるまでの日数に置き換えます。

ステップ3:ライフサイクル設定ファイルの適用

Boto3を使用して、ライフサイクル設定ファイルを適用します。以下のサンプルコードを参照してください:

import boto3

def set_lifecycle_configuration(bucket_name, lifecycle_configuration):
    s3 = boto3.client('s3')
    s3.put_bucket_lifecycle_configuration(
        Bucket=bucket_name,
        LifecycleConfiguration=lifecycle_configuration
    )

bucket_name = 'YOUR-BUCKET-NAME'
set_lifecycle_configuration(bucket_name, lifecycle_configuration)

「YOUR-BUCKET-NAME」をバケットの実際の名前に置き換え、サンプルで作成したライフサイクル設定(ファイル)を使用してください。

これで、AWS SDK(具体的にはBoto3)を使用して、AWS S3バケットに自動オブジェクト削除の設定が成功しました。次の章では、自動オブジェクト削除の設定にあたって注意すべき事項について解説します。

Setting up Automatic Object Deletion in AWS S3

Chapter 1: Introduction to AWS S3 and Overview of Automatic Object Deletion

AWS S3 (Amazon Simple Storage Service) is a secure and highly scalable object storage service that provides a variety of functionalities for storing and retrieving data. Automatic object deletion is one of the essential features provided by AWS S3.

Why do we need automatic object deletion?

Managing the lifecycle of data is essential for optimizing costs incurred while hosting objects in an S3 bucket and ensuring compliance with security policies related to data objects. For this purpose, the automatic object deletion feature is utilized.

How does automatic object deletion work?

You can define object deletion rules and apply them to an S3 bucket using AWS Management Console, AWS CLI (Command Line Interface), or SDK (Software Development Kit). Once rules are applied, S3 will automatically perform deletion operations for objects that match the rule criteria.

From the next chapter onwards, we will look at the sequential steps to set up automatic object deletion. We will start with setting up deletion rules using the AWS Management Console in Chapter 2.

Chapter 2: Setting up Automatic Object Deletion in AWS S3 using the AWS Management Console

In this chapter, we will walk you through the process of setting up automatic object deletion in your AWS S3 bucket using the AWS Management Console. Follow the steps provided below to complete the setup.

Step 1: Log in to the AWS Management Console

First, log in to the AWS Management Console and navigate to the S3 service page. If you haven't signed up yet, you can create a free account on the AWS website.

Step 2: Select your bucket

From the S3 service page, select the bucket in which you want to set up automatic object deletion.

Step 3: Choose "Lifecycle" in the Management tab

In the bucket details page, select the Management tab and then click on "Lifecycle."

Step 4: Create a lifecycle rule

Click the "Add lifecycle rule" button and enter the rule name, scope (whole bucket or specific folder), then click the "Next" button.

Step 5: Define and create the rule

Select the deletion rules and set the dates or intervals for the deletion operations for the objects. Once completed, click on the "Save rule" button to create the lifecycle rule.

Now, you have successfully set up automatic object deletion in your AWS S3 bucket using the AWS Management Console. In the next chapter, we will discuss how to set up automatic object deletion using the AWS CLI.

Chapter 3: Setting up Automatic Object Deletion in AWS S3 using AWS CLI

AWS CLI (Command Line Interface) is a tool that allows you to interact with AWS services using the command line. In this chapter, we will explore how to set up automatic object deletion in your S3 bucket using the AWS CLI.

Step 1: Install and configure AWS CLI

First and foremost, follow the official documentation to install and configure the AWS CLI:

https://aws.amazon.com/cli/

Step 2: Complete bucket options

Before crafting the bucket management command, make sure you have the correct bucket name in place. Then, create a 'lifecycle' configuration file.

Step 3: Create a lifecycle configuration file

Using a text editor, create a JSON-formatted 'lifecycle' configuration file. Refer to the following example:

{
  "Rules": [
    {
      "Status": "Enabled",
      "Filter": {
        "Prefix": "example-folder/"
      },
      "Expiration": {
        "Days": 30
      },
      "ID": "ExampleRule"
    }
  ]
}

In the code above, replace "example-folder/" with the name of the folder you want to delete and "Days" with the number of days until the deletion takes place.

Step 4: Apply the lifecycle configuration file

In the command prompt or terminal, apply the created configuration file by running the following command:

aws s3api put-bucket-lifecycle-configuration --bucket YOUR-BUCKET-NAME --lifecycle-configuration file://lifecycle.json

Replace "YOUR-BUCKET-NAME" with the actual name of your bucket and "lifecycle.json" with the path to your lifecycle configuration file.

After executing the command, the automatic object deletion setup using the AWS CLI is complete. Your S3 bucket shall now delete objects as specified in your configuration file.

In the next chapter, we will discuss setting up automatic object deletion using the AWS SDK.

Chapter 4: Setting up Automatic Object Deletion in AWS S3 using AWS SDK

AWS SDK (Software Development Kit) supports various programming languages, enabling you to develop applications that interact with AWS services. In this chapter, we will use the Python AWS SDK, Boto3, to set up automatic object deletion in an S3 bucket.

Step 1: Install and configure Boto3

First, refer to the official documentation to install and configure Boto3:

https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html

Step 2: Create the lifecycle configuration file

Generate a JSON-formatted lifecycle configuration in your Python code. Consider the following example:

lifecycle_configuration = {
    "Rules": [
        {
            "Status": "Enabled",
            "Filter": {
                "Prefix": "example-folder/"
            },
            "Expiration": {
                "Days": 30
            },
            "ID": "ExampleRule"
        }
    ],
}

In the code above, replace "example-folder/" with the name of the folder you want to delete and "Days" with the number of days until the deletion occurs.

Step 3: Apply the lifecycle configuration file

Use Boto3 to apply the lifecycle configuration file. Reference the example code below:

import boto3

def set_lifecycle_configuration(bucket_name, lifecycle_configuration):
    s3 = boto3.client('s3')
    s3.put_bucket_lifecycle_configuration(
        Bucket=bucket_name,
        LifecycleConfiguration=lifecycle_configuration
    )

bucket_name = 'YOUR-BUCKET-NAME'
set_lifecycle_configuration(bucket_name, lifecycle_configuration)

Replace "YOUR-BUCKET-NAME" with the actual name of your bucket and use the created lifecycle configuration(file) in the example.

You have now successfully set up automatic object deletion in the AWS S3 bucket using the AWS SDK, specifically Boto3. In the next chapter, we will discuss precautions to follow while setting up automatic object deletion.

Chapter 5: Precautions and Best Practices for Setting up Automatic Object Deletion in AWS S3

Configuring automatic object deletion has its complications and potential risks. Therefore, it is essential to understand and follow best practices when enabling this feature in your S3 buckets. Let us discuss the precautions and best practices you can follow while setting up automatic object deletion.

1. Backup critical data

Prior to activating automatic object deletion, ensure you have a backup of important data. Should an accidental deletion occur, data recovery without a backup could be very challenging and expensive. Implement versioning and cross-region replication for critical data to prevent unintended loss.

2. Test before implementation

Make sure to test your deletion rules in a controlled testing environment before applying them to production. This safeguards against executing incorrect rules that could result in inadvertent data loss. Pilot the rules on a small replica dataset or use a test bucket to evaluate the performance and implications.

3. Monitor deletion rules

Regularly monitor the deletion rules and make necessary adjustments according to the requirements of your organization. Monitor your S3 bucket using AWS CloudWatch and keep track of the total number of objects to ensure deletion is functioning as intended.

4. Avoid mixing critical and non-critical data

Structure your S3 buckets in such a manner that critical and non-critical data do not intermingle. Store them separately to eliminate the risk of accidentally deleting essential data while performing automatic deletion on non-critical data.

5. Configure alerts

Configure alerts using Amazon CloudWatch alarms or SNS notifications to inform you in case of a potential issue with your automatic object deletion rules. Such alerts enable prompt discovery and remediation of errors, avoiding problems caused by delays in rectifying unintended deletions.

By adopting these best practices and precautions, you can protect your data from accidental loss and ensure your automatic object deletions run smoothly and securely in your S3 bucket environment.

Chapter 6: Monitoring and Auditing Deleted Objects in AWS S3

It's essential to monitor and audit deleted objects within your S3 bucket to ensure data integrity, security, and compliance with regulatory requirements. In this chapter, we'll cover different methods to monitor and audit deleted objects in AWS S3.

1. Utilizing AWS CloudTrail

AWS CloudTrail records all API calls made within your AWS account, including deletions within your S3 bucket. By enabling and configuring CloudTrail, you can trace back all object-deletion events that took place and uncover additional details, such as the user who initiated the event, date, time, and API call used.

2. Implementing AWS CloudWatch logs and metrics

Amazon CloudWatch monitors the performance and resource utilization of various AWS services, including S3. By integrating CloudWatch with CloudTrail, you can create dedicated logs and metrics for object-deletion events, thus enabling near-real-time monitoring and generating alerts when certain deletion-related thresholds are reached.

3. Using Amazon Athena for querying the logs

Amazon Athena is an interactive query service that allows you to directly analyze stored data in S3 using standard SQL queries. Integrating Athena with your CloudTrail logs enables you to perform in-depth analysis and reporting on object-deletion events, thus aiding in the auditing and compliance process.

4. Establishing lifecycle metrics and inventory reports

Enabling S3 Inventory and object-level lifecycle metrics help you gain insights into your S3 objects' behavior and transitions, including deletions. S3 Inventory generates detailed reports on your objects, while object-level lifecycle metrics enable you to visualize and analyze deleted objects' data.

By following the methods described in this chapter, you can effectively monitor and audit deleted objects within your AWS S3 environment, ensuring compliance and data integrity are maintained at all times.

AWS S3에서 객체 자동 삭제 설정하기

1장: AWS S3 소개와 객체 자동 삭제의 개요

AWS S3 (Amazon Simple Storage Service)는 안전하고 확장성 높은 오브젝트 스토리지 서비스로, 데이터를 저장하고 검색할 수 있는 다양한 기능을 제공합니다. 객체 자동 삭제는 AWS S3에서 제공하는 중요한 기능 중 하나입니다.

왜 객체 자동 삭제가 필요한가요?

데이터의 수명 주기 관리는 S3 버킷에서 객체를 보관하는 동안 발생하는 비용을 최적화하고, 데이터 객체에 대한 보안 정책을 준수할 수 있는 방법을 제공합니다. 이를 위해 객체 자동 삭제 기능을 사용합니다.

어떤 방식으로 객체가 자동 삭제되나요?

AWS Management Console, AWS CLI(Command Line Interface) 또는 SDK(Software Development Kit)를 사용해서 객체 삭제 규칙을 정하고, 이를 S3 버킷에 적용할 수 있습니다. 규칙이 적용되면 S3는 규칙 조건과 일치하는 객체에 대한 삭제 작업을 자동으로 수행합니다.

다음 장부터는 실제로 객체 자동 삭제를 설정하는 방법을 순차적으로 알아보겠습니다. 2장에서는 AWS Management Console로 삭제 규칙을 설정하는 방법으로 시작하겠습니다.

2장: AWS Management Console을 이용한 객체 자동 삭제 설정 방법

이 장에서는 AWS Management Console을 사용하여 S3 버킷에서 객체 자동 삭제 설정을 진행해 볼 것입니다. 다음 단계에 따라 설정을 완료해 주세요.

Step 1: AWS Management Console에 로그인

우선, AWS Management Console에 로그인하여 S3 서비스 페이지로 이동하겠습니다. 아직 회원이 아니라면, AWS 웹사이트에서 무료 계정을 생성할 수 있습니다.

Step 2: 버킷 선택

S3 서비스 페이지에서 객체 자동 삭제를 설정하고자하는 버킷을 선택합니다.

Step 3: 관리 탭에서 "수명주기" 선택

버킷 세부 정보 페이지에서 관리 탭을 선택한 뒤, "수명주기"를 클릭합니다.

Step 4: 수명 주기 규칙 생성

"수명 주기 규칙 추가" 버튼을 클릭하고, 규칙 이름, 범위(전체 버킷 또는 특정 폴더) 등을 입력한 후 "다음" 버튼을 클릭합니다.

Step 5: 규칙 정의 및 생성

객체에 대한 삭제 규칙과 날짜 또는 간격을 선택하여 삭제 작업을 정의합니다. 모든 설정이 완료되면 "규칙 저장" 버튼을 클릭하여 수명 주기 규칙을 생성합니다.

이제 AWS Management Console을 사용하여 S3 버킷의 객체 자동 삭제 설정이 완료되었습니다. 다음 장에서는 AWS CLI를 사용한 객체 자동 삭제 설정 방법을 알아보겠습니다.

3장: AWS CLI를 이용한 객체 자동 삭제 설정 방법

AWS CLI(Command Line Interface)은 명령 줄을 사용하여 AWS 서비스와 상호 작용할 수 있는 도구입니다. 이 장에서는 AWS CLI를 활용해 S3 버킷에서 객체 자동 삭제를 설정해보겠습니다.

Step 1: AWS CLI 설치 및 구성

우선, AWS CLI를 아래 공식 문서에 따라 설치하고 구성해 주세요.

https://aws.amazon.com/cli/

Step 2: 버킷 옵션 완성

버킷 관리 명령어를 생성하기 전에 올바른 버킷 이름을 사용하고 있는지 확인하세요. 그런 다음, '수명 주기' 설정 파일을 작성합니다.

Step 3: 수명 주기 설정 파일 작성

텍스트 편집기를 사용하여 JSON 형식으로 '수명 주기' 설정 파일을 작성하세요. 다음 코드는 예시입니다.

{
  "Rules": [
    {
      "Status": "Enabled",
      "Filter": {
        "Prefix": "example-folder/"
      },
      "Expiration": {
        "Days": 30
      },
      "ID": "ExampleRule"
    }
  ]
}

위 코드에서 "example-folder/"를 삭제 대상 폴더 이름으로, "Days"를 원하는 삭제까지의 일수로 수정하세요.

Step 4: 수명 주기 설정 파일 적용

명령 프롬프트나 터미널에서 작성한 설정 파일을 적용하세요. 다음 코드를 실행하세요.

aws s3api put-bucket-lifecycle-configuration --bucket YOUR-BUCKET-NAME --lifecycle-configuration file://lifecycle.json

위 코드에서 "YOUR-BUCKET-NAME"을 실제 버킷 이름으로, "lifecycle.json"을 작성한 설정 파일 이름으로 변경하세요.

AWS CLI를 사용하여 객체 자동 삭제 설정이 완료되었습니다. 다음 장에서는 AWS SDK를 이용한 객체 자동 삭제 설정 방법을 알아보겠습니다.

4장: AWS SDK를 이용한 객체 자동 삭제 설정 방법

AWS SDK는 다양한 프로그래밍 언어를 지원하는 소프트웨어 개발 키트입니다. 이 장에서는 Python 언어의 AWS SDK인 Boto3 라이브러리를 사용하여 객체 자동 삭제를 설정해보겠습니다.

Step 1: Boto3 설치 및 구성

가장 먼저, Boto3를 설치하고 구성하는 방법 아래 공식 문서를 참고해 주세요.

https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html

Step 2: 수명 주기 설정 파일 작성

Python 코드에서 사용할 JSON 형식의 수명주기 설정을 생성합니다. 다음 코드를 참고하세요.

lifecycle_configuration = {
  "Rules": [
    {
      "Status": "Enabled",
      "Filter": {
        "Prefix": "example-folder/"
      },
      "Expiration": {
        "Days": 30
      },
      "ID": "ExampleRule"
    }],
}

위 코드에서 "example-folder/"를 삭제 대상 폴더 이름으로, "Days"를 원하는 삭제까지의 일수로 수정하세요.

Step 3: 수명 주기 설정 파일 적용

Boto3를 사용하여 수명 주기 설정 파일을 적용하세요. 아래의 예제 코드를 참고해 주세요.

import boto3

def set_lifecycle_configuration(bucket_name, lifecycle_configuration):
    s3 = boto3.client('s3')
    s3.put_bucket_lifecycle_configuration(
        Bucket=bucket_name,
        LifecycleConfiguration=lifecycle_configuration
    )

bucket_name = 'YOUR-BUCKET-NAME'
set_lifecycle_configuration(bucket_name, lifecycle_configuration)

위 코드에서 "YOUR-BUCKET-NAME"을 실제 버킷 이름으로 변경하고, 생성한 수명 주기 설정 파일을 사용하세요.

AWS SDK를 사용하여 객체 자동 삭제 설정이 완료되. 다음 장에서는 객체 자동 삭제 시 주의사항을 알아보겠습니다.

5장: 객체 자동 삭제 시 주의사항

객체 자동 삭제 설정을 사용하면 데이터 관리가 쉬워지지만, 설정에 신중해야 합니다. 그렇지 않으면 의도하지 않은 데이터 손실이 발생할 수 있습니다. 이 장에서는 객체 자동 삭제 설정 시 주의할 점을 소개합니다.

1. 삭제 규칙 설정 미리 검토

삭제 규칙을 설정하기 전에 세심하게 검토하세요. 삭제 설정은 데이터 유지 기간에 영향을 주지 않고, 합법적 기간 또한 고려해야 합니다. 이를 통해 잘못된 삭제 및 거버넌스 문제를 사전에 방지할 수 있습니다.

2. 데이터 백업 계획

자동 삭제된 데이터를 복원하려면 백업을 염두에 두세요. 데이터를 삭제하기 전에 안전하게 보관하는 것이 좋습니다. AWS 키워드Versioning(버전 관리)' 기능을 사용하면 실수로 삭제된 객체를 복원할 수 있으며, 워낙 중요한 기능이기 때문에 꼭 도입하세요.

3. 언제든지 삭제 규칙 변경 가능성

업무 요구나 저장 공간 요구에 따라 향후 객체 삭제 규칙을 변경해야 할 가능성을 염두에 두세요. 이러한 경우 규칙 수정이나 추가 제거를 수월하게 할 수 있어야 합니다.

4. 규칙 적용 최소시간 구분

AWS에서는 금방 생성된 객체를 바로 삭제하지 않도록 최소 보관 기간을 설정할 수 있습니다. 삭제 설정 시 최소 보관 기간을 명확하게 설정해두는 것이 좋습니다.

이제 객체 자동 삭제 설정에 대해 충분히 이해했습니다. 해당 설정을 적용할 때 주의사항을 명심하고, 실수로 데이터 손실이 발생하지 않도록 주하세요.

6장: 객체 자동 삭제 모니터링 및 유지 관리

객체 자동 삭제 설정을 완료했다면, 이 설정이 정상적으로 작동하는지 확인하고 유지 및 모니터링이 중요합니다. 이 장에서는 객체 자동 삭제 설정의 모니터링과 관리 방법을 알아봅니다.

1. Amazon S3 로그 활성화

Amazon S3 서비스에서 로그 기능을 활성화하면, 자동 삭제 작업이 수행되는 동안 어떤 객체가 삭제되었는지 파악할 수 있습니다. 로그 기능을 사용하면 예상치 못한 문제가 발생했을 때 원인을 쉽게 파악하고 대응할 수 있습니다.

2. Amazon CloudWatch 사용

Amazon CloudWatch를 이용하여 버킷의 스토리지 사용량을 모니터링하고 AWS S3 객체 자동 삭제 설정이 올바르게 작동하는지 확인하세요. 또한, 리소스 사용률에 대한 메트릭을 설정하고, 원하는 행동이 실행되지 않았다고 알려주는 알림을 받을 수 있습니다.

3. 정기적인 설정 검토

시간이 지나면서 기업의 요구와 데이터 스토리지 전략이 변경될 수 있습니다. 객체 자동 삭제 설정을 유지 보수하고 최적화하려면 설정 관리 담당자가 정기적으로 S3 객체 자동 삭제 규칙을 검토하고 설정을 업데이트할 필요가 있습니다.

4. 교육 및 문서화

객체 자동 삭제와 관련된 모든 소프트웨어와 프로세스를 문서화하고, 팀원들이 이에 대한 이해와 능력을 향상시킬 수 있도록 교육을 제공하세요. 자동 삭제 설정이 신중하게 관리되며 발생할 수 있는 문제가 최소화됩니다.

이상으로 객체 자동 삭제의 모니터링 및 유지 관리에 대한 내용을 마무리하며, 설정하신 객체 자동 삭제가 원활하게 작동하기를 바랍니다. 또한, 이를 통해 최적화된 데이터 관리가 가능하게 되길 기대합니다.

AWS S3로 정적 웹사이트를 쉽게 호스팅하는 방법

1장: AWS S3와 정적 웹 호스팅 이해하기

1.1 AWS S3의 기본 개념

AWS S3(Amazon Simple Storage Service)는 안전하고 확장 가능한 객체 저장 서비스입니다. 이 서비스를 통해 개발자들은 데이터를 쉽게 인터넷에 저장할 수 있습니다. S3에서는 데이터를 버킷이라는 공간에 저장합니다.

1.2 정적 웹 호스팅의 정의

정적 웹 호스팅은 HTML, CSS, JavaScript와 같이 변하지 않는 파일들을 이용하여 웹사이트를 구축하는 방법을 말합니다. 이 방법은 서버측 프로그래밍이 필요 없는 상태에서 웹페이지를 구축하고 호스팅하는데 적합합니다.

1.3 AWS S3를 이용한 정적 웹 호스팅 방법

AWS S3를 이용하여 정적 웹 호스팅을 하려면, 버킷을 생성하고 웹 페이지에 필요한 파일들을 업로드한 후, 정적 웹 사이트 호스팅 기능을 활성화해야 합니다.

2장: AWS S3 버킷 생성 및 웹 사이트 파일 업로드 과정

2.1 AWS 계정 생성 및 로그인 방법

AWS S3를 사용하기 위해서는, 먼저 AWS 계정을 생성하고 로그인해야 합니다. 계정이 없다면 AWS 공식 웹사이트에서 가입을 진행해주시기 바랍니다.

2.2 AWS Management Console에서 S3 접근 방법

AWS Management Console에 로그인을 완료했다면, '서비스' 메뉴에서 'S3'를 찾아서 클릭해주세요.

2.3 AWS S3에서 버킷 생성 방법

  1. S3 대시보드에서 '버킷 생성' 버튼을 클릭합니다.
  2. 버킷 이름을 정하고, 리전을 선택합니다. 주의해야 할 점은 버킷 이름은 전 세계에서 유일해야 한다는 것입니다.
  3. 필요한 옵션들을 설정한 후, '버킷 생성' 버튼을 클릭합니다.

2.4 웹 사이트 파일 업로드 방법

  1. 생성한 버킷을 선택한 후, '업로드' 버튼을 클릭합니다.
  2. 웹사이트 구성에 필요한 모든 파일(HTML, CSS, JavaScript 등)을 선택하여 추가합니다.
  3. 업로드가 완료되면, 각 파일에 대해 '퍼블릭 액세스 허용' 설정을 해야 합니다. 각 파일에 대한 설정 방법은 아래와 같습니다.
    1. 파일을 선택하고, '작업' 메뉴에서 '권한 수정하기'를 클릭합니다.
    2. '객체 ACL 수정하기'에서 'Everyone'에게 '읽기' 권한을 부여하고 저장합니다.

3장: 정적 웹 사이트 호스팅 활성화 방법

3.1 버킷 속성에 대한 설정 변경

정적 웹 호스팅을 활성화하려면, 아래와 같은 단계를 수행해야 합니다.

  1. 생성한 버킷을 선택합니다.
  2. 오른쪽 패널에서 '속성' 탭을 클릭합니다.
  3. '정적 웹 사이트 호스팅' 카드를 찾아 클릭합니다.

3.2 정적 웹 사이트 호스팅 활성화 방법

'정적 웹 사이트 호스팅' 카드에서는 다음과 같은 옵션을 설정해야 합니다.

  1. '이 버킷을 사용하여 웹 사이트를 호스팅함' 옵션을 선택합니다.
  2. 인덱스 문서에 대한 기본 HTML 파일명을 입력합니다. 일반적으로 'index.html'을 사용합니다.
  3. 필요한 경우, 에러 문서와 리다이렉트 규칙을 설정합니다.
  4. '변경 사항 저장' 버튼을 클릭하여 정적 웹 호스팅을 활성화합니다.

3.3 웹 사이트 엔드포인트 확인 방법

정적 웹 사이트 호스팅이 활성화되면, 웹 사이트에 액세스할 수 있는 엔드포인트(URL)이 제공됩니다.

엔드포인트 URL을 확인하는 방법은 다음과 같습니다:

  1. '정적 웹 호스팅' 카드에서 엔드포인트 URL을 찾습니다.
  2. 해당 URL을 복사하여 웹 브라우저의 주소창에 붙여넣고 엔터를 누릅니다.

4장: 사용자 지정 도메인을 이용한 웹 사이트 접속 설정

4.1 도메인 구입 및 Amazon Route 53 설정 방법

웹 사이트에 사용자 지정 도메인을 적용하려면, 먼저 도메인을 구입해야 합니다. 도메인을 구입하려면, Amazon Route 53 같은 도메인 제공자를 이용하세요. 도메인을 구입한 후에는 Route 53에서 호스팅 영역을 생성해야 합니다.

4.2 호스팅 영역에서 레코드 생성 방법

AWS S3 버킷과 사용자 지정 도메인을 연결하려면, 호스팅 영역에 두 개의 레코드를 생성해야 합니다. 아래와 같은 순서로 진행하세요.

  1. '속성' 탭으로 이동하여, '정적 웹 사이트 호스팅' 카드에서 웹사이트 엔드포인트를 복사합니다.
  2. Amazon Route 53에서 생성한 호스팅 영역으로 이동하여 '레코드 생성'을 클릭합니다.
  3. '단순 라우팅 정책'을 선택한 다음, 두 개의 레코드를 아래와 같이 생성합니다.
    1. 첫 번째 레코드: 도메인 이름을 입력하고, 레코드 유형은 'A – IPv4 주소'로 설정합니다. 'Alias'를 '예'로 설정하고 복사한 웹사이트 엔드포인트를 붙여넣습니다. 그리고 레코드를 생성합니다.
    2. 두 번째 레코드: 'www'라는 하위 도메인으로 홈페이지에 리디렉션하려면, 이름에 'www'를 입력합니다. 레코드 유형은 'CNAME – 캐노니컬 이름'을 선택합니다. 값에 복사한 웹사이트 엔드포인트를 입력하고 레코드를 생성합니다.

4.3 도메인 연결 확인 방법

레코드 생성이 완료되면, 몇 분 후에 사용자 지정 도메인을 통해 웹 사이트에 액세스할 수 있게 됩니다. 도메인 이름을 웹 브라우저의 주소창에 입력하고 엔터를 눌러 웹 사이트가 정상적으로 작동하는지 확인해보세요.

5장: AWS CloudFront를 이용한 웹 사이트 성능 향상 방법

5.1 AWS CloudFront의 개요

AWS CloudFront는 전 세계의 에지 위치에 콘텐츠를 캐싱하는 기능을 가진 콘텐츠 전송 네트워크(CDN) 서비스입니다. 이 서비스를 이용하면 웹 사이트의 전송 속도를 높이고, 캐싱 기능을 통해 트래픽을 빠르게 처리하여 웹 사이트의 전체적인 성능을 향상시킬 수 있습니다.

5.2 CloudFront 배포 생성 방법

AWS S3 버킷에 CloudFront를 적용하려면 아래와 같이 진행하세요.

  1. AWS Management Console에서 'CloudFront'를 검색하고 클릭합니다.
  2. '배포 생성' 버튼을 누르고 웹 배포를 설정합니다.
  3. 오리진 도메인 이름에서 정적 웹 사이트 버킷을 선택하거나 복사한 웹사이트 호스팅 엔드포인트(URL)를 입력합니다.
  4. 필요한 경우 정책 및 캐시 행동 설정을 조정하세요. 기본 설정을 사용하는 것도 충분합니다.
  5. 배포 설정을 완료하고 '배포 생성'을 클릭합니다.

5.3 CloudFront 배포 적용 및 확인 방법

CloudFront 배포가 완료되면 몇 분 내에 글로벌 캐시에 콘텐츠가 캐싱됩니다. 이렇게 하면 전 세계에서 웹 사이트의 속도와 성능이 향상됩니다.

CloudFront 배포로 생성된 도메인 이름을 사용하여 웹 사이트가 정상적으로 작동하는지 확인하세요. 선택적으로 Route 53 레코드를 업데이트하여 CloudFront 도메인을 사용자 지정 도메인의 엔드포인트로 설정할 수 있습니다.

How to Host a Static Website on AWS S3

Understanding AWS S3 and Static Web Hosting: A Comprehensive Guide

1.1 What is AWS S3?

Amazon Simple Storage Service, or AWS S3, is a highly secure and scalable storage service designed for internet use. It stores data in units known as 'buckets'.

1.2 The Basics of Static Web Hosting

Static web hosting involves the creation of a website using unchanging HTML, CSS, JavaScript files, and other resources. This method is ideal for hosting web pages that do not require dynamic functionality or server-side programming.

1.3 How to Host a Static Website on AWS S3

In order to host a static website using AWS S3, a bucket needs to be created, website files uploaded to that bucket, and static website hosting enabled.

Step by Step Guide to Creating an AWS S3 Bucket and Uploading Website Files

2.1 Creating and Logging in to Your AWS Account

To utilize AWS S3, it is necessary to first create and log in to an AWS account. If you do not yet have an account, sign up on the official AWS website.

2.2 Accessing S3 through the AWS Management Console

After logging in to the AWS Management Console, locate and click on 'S3' within the 'Services' menu.

2.3 The Process of Creating a Bucket

  1. Click on the 'Create bucket' button located on the S3 dashboard.
  2. Choose a unique bucket name and region. Remember, the bucket name must be unique worldwide.
  3. Configure any additional options as necessary, then click 'Create bucket' to finalize your new bucket.

2.4 Uploading Your Website Files

  1. Select the bucket you just created and click the 'Upload' button.
  2. Add all the files (HTML, CSS, JavaScript, etc.) necessary for your static website.
  3. Upon completion of the upload, it is necessary to allow public access to all files. Configure this setting for each file as follows:
    1. Select the file and click 'Change permissions' within the 'Actions' menu.
    2. Within the 'Modify object ACL' section, provide 'Read' permission to 'Everyone' and save your changes.

Guide to Enabling Static Website Hosting on AWS S3

3.1 Modifying Your Bucket Properties

To enable static web hosting, follow these steps:

  1. Select the bucket you have created.
  2. Click the 'Properties' tab located in the right panel.
  3. Locate and click on the 'Static website hosting' card.

3.2 How to Enable Static Website Hosting

Configure the options within the static website hosting card as follows:

  1. Select the option 'Use this bucket to host a website.'
  2. Input the default HTML filename for the index document. Typically, 'index.html' is used.
  3. Set up error documents and redirect rules as necessary.
  4. Click the 'Save changes' button to enable static web hosting.

3.3 Checking Your Website Endpoint

Once static web hosting is enabled, a website endpoint (URL) will be provided. This URL can be used to access your website.

To check the endpoint URL, follow these steps:

  1. Find the endpoint URL within the static website hosting card.
  2. Copy this URL and paste it into your web browser's address bar, then press Enter.

Connecting Your Website to a Custom Domain: A Step by Step Guide

4.1 Purchasing a Domain and Setting Up Amazon Route 53

To apply a custom domain to your website, you first need to purchase a domain. Domain providers such as Amazon Route 53 can be used to acquire a domain. After purchasing a domain, create a hosted zone in Route 53.

4.2 Creating Records in the Hosted Zone

To link your AWS S3 bucket to a custom domain, it's necessary to create two records in the hosted zone. Follow the steps below:

  1. Copy the bucket website endpoint from the 'Static website hosting' card within the 'Properties' tab.
  2. Go to the hosted zone you created in Amazon Route 53 and click 'Create record.'
  3. Select 'Simple routing policy' and create the two records as follows:
    1. First record: Enter the domain name and choose the record type 'A – IPv4 address.' Set the 'Alias' to 'Yes' and paste in the copied website endpoint. Click 'Create' to finalize the record.
    2. Second record: If you want the homepage to redirect to a 'www' subdomain, enter 'www' in the name field. Choose the record type 'CNAME – Canonical name.' Paste the copied website endpoint as the value and finalize the record.

4.3 Verifying Domain Connection

Once the records are created, you can access the website via the custom domain within a few minutes. Confirm the functionality of the website by typing the domain name into the address bar and pressing Enter.

Boosting Website Performance with AWS CloudFront: A Detailed Guide

5.1 Introduction to AWS CloudFront

AWS CloudFront is a renowned Content Delivery Network (CDN) service that caches content at edge locations across the globe to enhance website speed and performance. Using this service, the transfer speed of your website improves and the caching feature facilitates faster traffic processing, thus boosting the overall performance of your website.

5.2 Steps to Create a CloudFront Distribution

To integrate CloudFront with your AWS S3 bucket, follow these steps:

  1. Search for and click on 'CloudFront' in the AWS Management Console.
  2. Click the 'Create Distribution' button and set up a web distribution.
  3. Select your static website bucket or enter the copied website hosting endpoint (URL) in the 'Origin Domain Name' field.
  4. Adjust policy and cache behavior settings as necessary. The default settings are usually sufficient.
  5. Finalize the distribution settings and click 'Create Distribution.'

5.3 Applying and Verifying Your CloudFront Distribution

Upon completion of the CloudFront distribution, your content will be cached in the global cache within a few minutes. This leads to improved website speed and performance worldwide.

Ensure the proper functioning of your website using the domain name generated by the CloudFront distribution. If desired, you can update the Route 53 record to set the CloudFront domain as the endpoint for your custom domain.

AWS S3で静的ウェブサイトを簡単にhostingする方法

第1章:AWS S3と静的ウェブホスティングについて理解する

1.1 AWS S3の基本

AWS S3 (Amazon Simple Storage Service) は、開発者がインターネットを介してデータを安全に保存できるスケーラブルなオブジェクトストレージサービスです。S3では、データはバケットというコンテナに保存されます。

1.2 静的ウェブホスティングの詳細

静的ウェブホスティングとは、HTML、CSS、JavaScriptなどの静的リソースを使用してウェブサイトを構築する方法です。サーバーサイドプログラミングが不要なウェブページのホスティングに最適です。

1.3 AWS S3を用いた静的ウェブサイトのホスティング方法

AWS S3 を利用して静的ウェブサイトをホストする際には、まずバケットを作成し、ウェブサイトのファイルをバケットにアップロードする必要があります。その後、静的ウェブホスティングを有効にします。

第2章:AWS S3バケットの作成とウェブサイトファイルのアップロード

2.1 AWSアカウントの作成とログイン

AWS S3を使用するためには、まずAWSアカウントを作成し、ログインする必要があります。アカウントをまだ持っていない場合は、AWS公式ウェブサイトで新規登録を行ってください。

2.2 AWSマネジメントコンソールからS3にアクセスする

AWSマネジメントコンソールにログインしたら、「サービス」メニューから「S3」を選択してクリックします。

2.3 バケットの作成

  1. S3ダッシュボードから「バケットを作成」ボタンをクリックします。
  2. 一意のバケット名とリージョンを選択します。バケット名は全世界で一意である必要があります。
  3. 追加の設定を選択し、新しいバケットを作成するために「バケットを作成」をクリックします。

2.4 ウェブサイトファイルのアップロード

  1. 作成したバケットを選択し、「アップロード」ボタンをクリックします。
  2. 静的ウェブサイトの全てのファイル(HTML、CSS、JavaScriptなど)を選択して追加します。
  3. アップロードが完了したら、全てのファイルへのパブリックアクセスを許可する設定を行います。
    1. ファイルを選択し、「アクション」メニューから権限の変更をクリックします。
    2. 「Modify object ACL」セクションで、「Everyone」に「Read」権限を付与し、変更を保存します。

第3章:静的ウェブホスティングの有効化

3.1 バケットのプロパティの変更

静的ウェブホスティングを有効にするため、次の手順を実行します。

  1. 作成したバケットを選択します。
  2. 右側のパネルで「プロパティ」タブをクリックします。
  3. 「静的ウェブサイトホスティング」カードを見つけてクリックします。

3.2 静的ウェブホスティングの有効化

静的ウェブサイトホスティングカードで以下の設定を行います。

  1. 「このバケットをウェブサイトホストに使用する」オプションを選択します。
  2. インデックスドキュメントとして使用するHTMLファイルの名前を指定します。「index.html」が一般的に使用されます。
  3. エラードキュメントやリダイレクトルールの設定が必要な場合は、それに応じて設定します。
  4. 「変更を保存」ボタンをクリックして、静的ウェブホスティングを有効にします。

3.3 ウェブサイトエンドポイントの確認

静的ウェブホスティングが有効になると、ウェブサイトにアクセスするためのエンドポイント(URL)が提供されます。

エンドポイントURLを確認するには、以下の手順を実行します:

  1. 静的ウェブサイトホスティングカード内でエンドポイントURLを見つけます。
  2. このURLをコピーして、ウェブブラウザのアドレスバーに貼り付けて、Enter キーを押します。

第4章:カスタムドメインをウェブサイトに接続する

4.1 ドメインの購入とAmazon Route 53の設定

ウェブサイトにカスタムドメインを適用するためには、まずドメインを購入する必要があります。ドメインプロバイダーとしては、Amazon Route 53などのサービスがあります。ドメインを購入した後、Route 53でホストゾーンを作成します。

4.2 ホストゾーンでのレコード作成

AWS S3バケットをカスタムドメインに接続するには、ホストゾーンに2つのレコードを作成する必要があります。以下の手順で行います:

  1. 'Properties'タブ内の'Static website hosting'カードからバケットウェブサイトエンドポイントをコピーします。
  2. Amazon Route 53で作成したホストゾーンに移動し、「Create record」をクリックします。
  3. 「Simple routing policy」を選択して2つのレコードを次のように作成します。
    1. 最初のレコード:ドメイン名を入力し、レコードタイプ「A-IPv4 address」を選択します。 Aliasを「Yes」に設定し、コピーしたウェブサイトエンドポイントを貼り付けます。レコードを作成します。
    2. 2つ目のレコード:ホームページを「www」サブドメインにリダイレクトさせる場合は、「www」を名前に入力します。レコードタイプ「CNAME-Canonical name」を選択し、コピーしたウェブサイトエンドポイントを値として入力します。レコードを作成します。

4.3 ドメイン接続の確認

レコードが作成されたら、カスタムドメインでウェブサイトにアクセスできるようになります。アドレスバーにドメイン名を入力し、Enter キーを押して、ウェブサイトが正しく動作することを確認します。

第5章:AWS CloudFrontを利用したウェブサイトのパフォーマンス向上

5.1 AWS CloudFrontの概要

AWS CloudFrontは、世界中のエッジロケーションでコンテンツをキャッシュすることにより、ウェブサイトの速度とパフォーマンスを最適化するコンテンツ配信ネットワーク(CDN)サービスです。このサービスを利用することにより、ウェブサイトの転送速度が向上し、キャッシュ機能によりトラフィックの処理が高速化され、ウェブサイトの全体的なパフォーマンスが向上します。

5.2 CloudFrontディストリビューションの作成

AWS S3バケットにCloudFrontを適用するには、以下の手順を実行します。

  1. AWS管理コンソールで、「CloudFront」を検索し、それをクリックします。
  2. 「Create Distribution」ボタンをクリックし、Webディストリビューションの設定を行います。
  3. 静的ウェブサイトバケットまたはコピーしたウェブサイトホスティングエンドポイント(URL)を「Origin Domain Name」に入力または選択します。
  4. ポリシーやキャッシュ動作の設定を必要に応じて調整します。デフォルトの設定で十分です。
  5. ディストリビューション設定を完了し、「Create Distribution」をクリックします。

5.3 CloudFrontディストリビューションの適用と確認

CloudFrontディストリビューションが作成されると、数分以内にコンテンツがグローバルキャッシュにキャッシュされ、ウェブサイトの速度とパフォーマンスが世界中で向上します。

CloudFrontディストリビューションで生成されたドメイン名を使用して、ウェブサイトが正しく動作することを確認してください。必要に応じて、Route 53のレコードを更新して、カスタムドメインのエンドポイントにCloudFrontドメインを設定します。

Wednesday, June 10, 2020

Flutter에서 AWS S3로 파일 업로드 Presigned URL과 Lambda Cold Start 문제 해결

Flutter에서 AWS S3로 파일 업로드: Pre-signed URL과 Lambda Cold Start 문제 해결

이 글에서는 Flutter에서 AWS S3로 파일을 직접 업로드하는 방법 및 Lambda Cold Start 문제 해결에 대해 설명합니다.

기존의 방식과 문제점

기존에는 앱에서 서버를 거쳐 S3로 파일을 업로드하는 방식을 사용하였습니다. 이 방식은 비효율적이므로, 앱에서 직접 S3로 파일을 업로드하는 방식을 도입하였습니다. 하지만 Flutter에서는 아직 AWS SDK가 제공되지 않아, 서버에서 Presigned URL을 받아야 했습니다.

우리 서비스는 Serverless를 지향하고 있어서 이 기능도 Lambda에 구현하였습니다. SDK를 활용해 URL을 생성 후 내려주고 테스트해보니 잘 동작하였으나, 예상치 못한 문제가 발생하였습니다.

Lambda Cold Start 문제 발생

일정 시간 동안 사용하지 않다가 Presigned URL을 담당하는 Lambda 함수를 다시 호출하면, 기존과 다른 URL을 반환하는 문제가 발생하였습니다. 이로 인해 파일 업로드가 정상적으로 이루어지지 않았습니다.

임시방편 해결방법

임시방편으로 최초 요청은 더미 요청으로 처리하고, 2번째 요청부터 반환된 URL을 사용하도록 하였습니다. 하지만 이 방법이 올바른 해결 방법인지에 대한 확신은 없었습니다.

Lambda Cold Start 문제 해결

구글링 결과 람다의 Cold Start 문제일 수 있다는 정보를 얻었습니다. 이를 해결하기 위해, 아래와 같은 IAM 정책을 Lambda 함수에 추가하였습니다:


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::버킷명",
                "arn:aws:s3:::버킷명/*"
            ]
        }
    ]
}

이렇게 함으로써 Lambda Cold Start 문제를 해결할 수 있었습니다.

Sunday, May 3, 2020

Flutter에서 Dio로 S3 Presigned URL 업로드하기, 기타 문제 해결방법

Flutter와 AWS S3: Dio를 활용한 파일 업로드 문제 해결

Flutter에서 AWS SDK가 아직 제공되지 않기 때문에, 때때로 presigned URL을 활용하여 S3에 파일을 업로드해야 하는 경우가 있습니다. 이 글에서는 presigned URL 생성 방법은 생략하고, Flutter에서 dio를 사용하여 어떻게 파일을 업로드하는지 설명하겠습니다.

Dio 설정과 테스트

Dio 공식 문서에는 binary를 활용한 파일 업로드 가이드가 있어서 다음과 같이 dio를 설정할 수 있습니다:

Dio 설정 스크린샷

저는 이렇게 설정한 후 테스트만 해 두었고, 얼마 전 실제로 사용해야 할 일이 생겨 다시 테스트해 보았습니다. 그런데 예상치 못하게 동작했습니다. 업로드는 되는 것 같았지만, URL로 접속해 보면 알 수 없는 문자들만 나타났습니다:

문제 발생 스크린샷

문제의 원인 및 해결

잘 동작하던 코드가 갑자기 안 되니 당황스러웠지만, 인코딩 문제일 것 같아 headers에 charset이나 content-type 등을 추가해 보았으나 여전히 동작하지 않았습니다.

워낙 Flutter 자료가 부족하고 특히 S3 관련해서 더 적어서 구글링으로도 해결 방법을 찾기 어려웠습니다.

결론부터 말하면 문제의 원인은 content-type을 지정하지 않아서였습니다. dio에서는 content-type을 header에 정의할 수 있지만, 이 경우에는 동작하지 않았습니다. content-type은 header가 아닌 다음과 같이 지정해주어야 잘 동작했습니다:

해결 방법 스크린샷

Saturday, May 11, 2019

AWS Lambda와 API Gateway 활용, S3에 Multipart 이미지 업로드 시 파일 깨짐 문제 해결

AWS API Gateway와 Lambda
AWS API Gateway와 Lambda

서비스 개발 중에 클라이언트에서 multipart로 사진을 AWS Lambda로 보내고, Lambda에서 S3로 다시 사진을 업로드하는 작업이 필요했습니다. Flutter를 이용해 서비스를 개발하려 했으나 아직 Flutter용(dart) SDK가 없어서 우리쪽 서버를 거쳐서 보내기로 결정했습니다.

미디어 타입 설정

Lambda 코드 작성 전에 API gateway에서 미디어 타입을 추가해야 합니다.

API Gateway 미디어 타입 설정
API Gateway에서 미디어 타입 설정하기

코드 작성 및 팁 공유

인터넷에서 여러 자료를 참고하여 아래와 같은 코드를 작성했습니다. 이 예제는 여러 장의 사진을 받아 1장만 S3로 업로드하는 방법입니다. 한 가지 팁으로는, AWS SDK가 이미 설치되어 있으므로 별도의 설치가 필요하지 않다는 점입니다.


//const AWS = require('aws-sdk');
const multipart = require('parse-multipart');
exports.handler = (event, context, callback) => {
    const s3 = new AWS.S3({
        credentials: {
            accessKeyId: 'your accessKeyId',
            secretAccessKey: 'your secretAccessKey',
        },
        params: { Bucket: 'your Bucket' }
    });

    let bodyBuffer = Buffer.from(event['body-json'], 'base64');
    let boundary = multipart.getBoundary(event.params.header['content-type']);
    let parts = multipart.Parse(bodyBuffer, boundary);
    let data = {
        Key: 'your path',
        Body: parts[0].data,
        ContentEncoding: 'base64',
        ContentType: 'image/jpeg'
    };

    s3.putObject(data, function (err, data) {
      if (err) {
          callback(null, err);
      } else {
          callback(null, data);
      }
   });
};

테스트 및 문제 해결


<html>
<body>
<form action="https://your-url" enctype="multipart/form-data" method="post">
    <input multiple="" name="body-json" type="file" />
    <input type="submit" value="Submit" />
</form>
</body>
</html>

위와 같이 웹페이지를 만들어 테스트를 진행했지만 어떤 때는 동작하고 어떤 때는 동작하지 않는 이상한 상황이 발생했습니다. 원인을 찾기 위해 여러 가지 시도를 해봤지만 결국 문제의 원인은 웹에서 보낼 때 캐릭터셋 지정이 없어서 한글 파일의 경우 파일명이 깨지고 전송 후에 파일 자체가 깨지는 것이었습니다. 이를 해결하기위해 form 태그 안에 accept-charset="UTF-8"속성을 추가하고 다시 테스트해 보니 문제가 해결되었고, S3 업로드도 잘 실행되었습니다.


<html>
<body>
<form action="https://your-url" enctype="multipart/form-data" method="post" accept-charset="UTF-8">
    <input multiple="" name="body-json" type="file" />
    <input type="submit" value="Submit" />
</form>
</body>
</html>

사실상 코드는 큰 문제가 없었는데 캐릭터셋을 생각하지 못하고 코드 문제인 줄 알아서 이것저것 시도하느라 시간을 많이 잡아먹었습니다. 혹시 같은 작업이나 비슷한 문제를 겪는 사람들에게 조금이라도 도움이 되길 바랍니다.

참고 : 여러 형식의 파일 multipart upload 방법(https://blogdeveloperspot.blogspot.com/2019/12/aws-apigateway-lambdanodejs-multipart.html)

Friday, April 26, 2019

AWS S3와 Route53을 활용한 정적 웹페이지 호스팅 문제 해결

AWS에서 S3와 Route53을 이용한 정적 웹페이지 설정

Amazon Web Services(AWS)의 S3는 html, javascript, css 등의 파일을 저장하고 제공할 수 있는 서비스입니다. 이를 이용해 정적 웹페이지(static web page)를 만들고, Route53을 통해 도메인을 설정할 수 있습니다. 그러나 때때로 Route53에서 ALIAS 설정 시 S3 버킷이 목록에 보이지 않는 문제가 발생합니다.

S3 버킷 이름과 도메인 이름 일치 여부 확인

이런 문제가 발생할 경우 첫 번째로 확인해야 할 것은 생성한 S3 버킷의 이름과 연결하려는 도메인 이름이 일치하는지 여부입니다. 예를 들어, 'example.com'이라는 도메인으로 연결하려면, 해당하는 S3 버킷의 이름도 반드시 'example.com'으로 설정되어 있어야 합니다.

AWS 사용 팁: 초기 설정 주의 사항

위 내용은 간단하지만 AWS를 처음 사용하는 사람들에게는 알기 어려운 부분일 수 있습니다. 따라서 이 정보가 AWS 서비스를 처음 접하는 사람들에게 유익하길 바라며, 이러한 팁을 공유함으로써 불필요한 시간 낭비를 줄일 수 있기를 기대합니다.