Skip to content

Commit

Permalink
WMS ID: #11328 - Quarterly QA (#327)
Browse files Browse the repository at this point in the history
Co-authored-by: TheKoguryo <[email protected]>
  • Loading branch information
TheKoguryo and TheKoguryo authored Jan 25, 2024
1 parent b059504 commit e769db9
Show file tree
Hide file tree
Showing 32 changed files with 207 additions and 203 deletions.
57 changes: 0 additions & 57 deletions oci-hol-ko/fn-fundamentals/cloud-login/cloud-login.md

This file was deleted.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
30 changes: 15 additions & 15 deletions oci-hol-ko/fn-fundamentals/deploy-hello-fn/deploy-hello-fn.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,10 +135,10 @@ Oracle Functions을 실행하는 데에 대한 기본 사항을 알아봅니다.
| FDK Language | Default | Supported | Deprecated |
| :----------- | :------ | :----------------- | :--------- |
| Java | 17 | 17, 11, 8 | n/a |
| Python | 3.9 | 3.9, 3.8, 3.7, 3.6 | n/a |
| Ruby | 2.7 | 2.7 | 2.5 |
| Go | 1.15 | 1.15 | 1.11 |
| Node.js | 14 | 14 | 11 |
| Python | 3.11 | 3.9, 3.8, 3.7 | 3.7, 3.6 |
| Ruby | 3.1 | 3.1, 2.7 | 2.5 |
| Go | 1.19 | 1.19, 1.18 | 1.15, 1.11 |
| Node.js | 18 | 18, 16, 14 | 11 |
| C# (.NET) | 6.0 | 6.0, 3.1 | n/a |
{: title="Languages Supported by OCI Functions"}

Expand Down Expand Up @@ -189,11 +189,11 @@ Oracle Functions을 실행하는 데에 대한 기본 사항을 알아봅니다.
$ cat func.yaml
schema_version: 20180708
name: hello-java
version: 0.0.1
version: 0.0.2
runtime: java
build_image: fnproject/fn-java-fdk-build:jdk17-1.0.179
run_image: fnproject/fn-java-fdk:jre17-1.0.179
cmd: com.example.fn.HelloFunction::handleRequest
build_image: fnproject/fn-java-fdk-build:jdk17-1.0.182
run_image: fnproject/fn-java-fdk:jre17-1.0.182
cmd: com.example.fn.HelloFunction::handleRequest
```

10. Function을 배포합니다.
Expand Down Expand Up @@ -298,7 +298,7 @@ Function에서 많이 사용하는 Python으로 동일한 과정을 수행해
* requirements.txt: func.py에서 추가적으로 사용되는 패키지 의존성을 여기에 추가합니다.
```
$ cat requirements.txt
fdk>=0.1.61
fdk>=0.1.66
```

* func.yaml: Function 정의 파일입니다. 자바때와 동일한 형식입니다.
Expand All @@ -308,10 +308,10 @@ Function에서 많이 사용하는 Python으로 동일한 과정을 수행해
name: hello-python
version: 0.0.1
runtime: python
build_image: fnproject/python:3.9-dev
run_image: fnproject/python:3.9
build_image: fnproject/python:3.11-dev
run_image: fnproject/python:3.11
entrypoint: /python/bin/fdk /function/func.py handler
memory: 256
memory: 256
```

3. Function을 배포합니다.
Expand Down Expand Up @@ -357,7 +357,7 @@ Function에서 많이 사용하는 Python으로 동일한 과정을 수행해

3. 창이 뜨면 기본 설정값으로 로그를 활성화합니다.

![Enable Log](images/fn-app-enable-log.png =60%x*)
![Enable Log](images/fn-app-enable-log.png =50%x*)

4. 로그가 활성이 완료되면, 로그 이름을 클릭합니다.

Expand Down Expand Up @@ -386,7 +386,7 @@ Function에서 많이 사용하는 Python으로 동일한 과정을 수행해

2. 왼쪽 메뉴에서 Explorer를 선택하면, 기본 설정된 사용자의 워크스페이스로 홈 디렉토리가 등록되어 있습니다.

3. 개발툴에서 제공하는 기본 기능을 통해 생성된 Function을 개발하면 됩니다. Code Editor는 Cloud Shell과 동일한 환경이므로 JDK 등 기본툴을 사전에 설치되어 있습니다.
3. 개발툴에서 제공하는 기본 기능을 통해 생성된 Function을 개발하면 됩니다. Code Editor는 Cloud Shell과 동일한 환경이므로 JDK 등 기본툴이 이미 설치되어 있습니다.

![Workspace](images/code-editor-workspace.png)

Expand Down Expand Up @@ -423,4 +423,4 @@ Function에서 많이 사용하는 Python으로 동일한 과정을 수행해
## Acknowledgements

* **Author** - DongHee Lee
* **Last Updated By/Date** - DongHee Lee, October 2023
* **Last Updated By/Date** - DongHee Lee, January 2024
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 16 additions & 5 deletions oci-hol-ko/fn-fundamentals/setup-cloud-env/setup-cloud-env.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ OCI 대시보드에 로그인하여 리소스 생성에 필요한 정보를 확
<copy>
Allow group <group-name> to manage repos in tenancy where ANY {request.permission = 'REPOSITORY_INSPECT', request.permission = 'REPOSITORY_READ', request.permission = 'REPOSITORY_CREATE', request.permission = 'REPOSITORY_UPDATE'}
</copy>
```
```

![Revised Policy](images/revised-policies.png)

Expand All @@ -97,15 +97,26 @@ OCI 대시보드에 로그인하여 리소스 생성에 필요한 정보를 확
- Description: Policy for Functions Labs for oci-hol-*xx* compartment
- Compartment: **root compartment**를 선택
- Policy:

* `<group-name>`을 이전규칙을 참고하여 적용할 사용자 그룹으로 변경합니다. 예, 'Default'/'oci-group'
* `<compartment-name>`은 대상 Compartment로 변경합니다. 예, oci-hol-xx

```
<copy>
Allow group <group-name> to manage policies in compartment <compartment-name>
Allow group <group-name> to manage virtual-network-family in compartment <compartment-name>
</copy>
```

```
<copy>
Allow group <group-name> to manage buckets in compartment <compartment-name>
Allow group <group-name> to manage instance-family in compartment <compartment-name>
Allow group <group-name> to manage volume-family in compartment <compartment-name>
Allow group <group-name> to manage virtual-network-family in compartment <compartment-name>
Allow group <group-name> to manage serviceconnectors in compartment <compartment-name>
Allow group <group-name> to read audit-events in compartment <compartment-name>
Allow group <group-name> to manage api-gateway-family in compartment <compartment-name>
</copy>
```


Expand All @@ -127,18 +138,18 @@ OCI 대시보드에 로그인하여 리소스 생성에 필요한 정보를 확

5. 새 VCN의 이름(예, oci-hol-vcn)하고, **Next**을 클릭합니다.

![Create VCN](images/create-oci-hol-vcn.png " ")
![Create VCN](images/create-oci-hol-vcn.png =70%x*)

6. 생성될 VCN과 관련 네트워크 자원들을 리뷰하고, **Create**을 클릭합니다.

7. 인터넷 연결이 되는 관련 자원들을 포함하여 VCN이 만들어지게 됩니다.

![Created VCN](images/created-oci-hol-vcn.png =70%x*)
![Created VCN](images/created-oci-hol-vcn.png =60%x*)


이제 **다음 실습을 진행**하시면 됩니다.

## Acknowledgements

* **Author** - DongHee Lee
* **Last Updated By/Date** - DongHee Lee, October 2023
* **Last Updated By/Date** - DongHee Lee, January 2024
79 changes: 39 additions & 40 deletions oci-hol-ko/fn-fundamentals/usecase-api-backend/api-backend.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,41 @@ OCI Functions의 사용사례로 API Backend로 사용하는 사례입니다.
- Lab 2 실습 완료


## Task 1. API Backend용 Function 만들기
## Task 1. 실습을 위한 Policy 설정하기

런타임에 API Gateway가 Function 호출시 할 수 있도록 권한이 필요합니다. 이를 위해 아래와 같이 Policy를 설정합니다.

1. 왼쪽 상단의 **Navigation Menu**를 클릭하고 **Identity & Security**으로 이동한 다음, **Identity** > **Policies** 을 선택합니다.

2. **Create Policy** 클릭

3. 아래 값으로 Policy를 설정하고 생성합니다.

- Name: `api-gateway-policy`
- Description: `Policy for API Gateway`
- Compartment: 계속 사용하던 Compartment 선택, **oci-hol-xx**를 선택
- Policy Builder: **Show manual editor** 슬라이딩 버튼을 클릭하여 직접 입력합니다.

1. API Gateway 사용을 위한 설정
* `<compartment-name>`은 오브젝트 스토리지 버킷이 있는 Compartment 이름으로 대체합니다. 예, oci-hol-xx
* `<group-name>`을 적용할 사용자 그룹으로 변경합니다. 예, 'Default'/'oci-group'

```
<copy>
Allow group <group-name> to manage api-gateway-family in compartment <compartment-name>
</copy>
```

2. API Gateway에서 Function을 호출하는 규칙을 설정하기 위해 필요한 정책
* `<compartment-name>`은 오브젝트 스토리지 버킷이 있는 Compartment 이름으로 대체합니다. 예, oci-hol-xx

```
<copy>
allow any-user to use functions-family in compartment <compartment-name> where all {request.principal.type='ApiGateway', request.resource.compartment.id=target.compartment.id}
</copy>
```

## Task 2. API Backend용 Function 만들기

Backend API로서 Function이 역할을 수행할때, 코드 구현시 사용할 수 있는 메타 정보를 먼저 알아봅니다. 즉 HTTP로 호출되었을 때 호출 정보들을 가져오는 부분에 우선 살펴봅니다. 일단은 hello-world 버전을 그대로 사용합니다.
API의 내부 로직은 이후 요건에 따라 각 개발언어로 구현하면 될 것입니다.
Expand Down Expand Up @@ -61,7 +95,7 @@ API의 내부 로직은 이후 요건에 따라 각 개발언어로 구현하면
{"message": "Hello KilDong"}
```

## Task 2. API Gateway 생성
## Task 3. API Gateway 생성

1. 왼쪽 상단의 **Navigation Menu**를 클릭하고 **Developer Services**으로 이동한 다음 **API Management** 하위의 **Gateway** 를 선택합니다.

Expand Down Expand Up @@ -126,7 +160,7 @@ API의 내부 로직은 이후 요건에 따라 각 개발언어로 구현하면
14. 배포한 규칙은 {Endpoint}/http-info로 요청이 오면, oci-http-info-python로 라우팅하는 간단한 설정이었습니다.


## Task 3. Security Rule 추가
## Task 4. Security Rule 추가

Deployment의 Endpoint로 요청을 수신하기 위해 보안규칙에서 https(443 포트) 개방이 필요합니다.

Expand All @@ -142,41 +176,7 @@ Deployment의 Endpoint로 요청을 수신하기 위해 보안규칙에서 https
![Added Result](images/add-ingress-rule-result.png =60%x*)


## Task 4. API Gateway를 위한 Policy 추가

API Gateway로 요청이 오면, Functions을 호출하도록 앞선 Task에서 API Deployment에서 설정하였습니다. 런타임에 API Gateway가 Function 호출시 할 수 있도록 권한이 필요합니다. 이를 위해 아래와 같이 Policy를 설정합니다.

본 실습에서는 동일한 Compartment를 계속 사용하고 있으며, 아래 정책은 API Gateway가 속한 compartment id와 Function이 속한 compartment name이 필요합니다.

1. 왼쪽 상단의 **Navigation Menu**를 클릭하고 **Identity & Security**으로 이동한 다음 **Compartments** 을 선택합니다.

2. API Gateway가 속한 Compartment의 OCID를 복사해 둡니다.

![Compartment OCID](images/compartment-ocid.png =70%x*)

3. 왼쪽 메뉴에서 **Identity** > **Policies** 을 선택합니다.

4. **Create Policy** 클릭

5. 아래 값으로 Policy를 설정하고 생성합니다.

- Name: `api-gateway-policy`
- Description: `Policy for API Gateway`
- Compartment: 계속 사용하던 Compartment 선택, **oci-hol-xx**를 선택
- Policy Builder: **Show manual editor** 슬라이딩 버튼을 클릭하여 직접 입력합니다.
* *[compartment-name]는 Function이 있는 Compartment 이름으로 대체합니다.*
* *[compartment-id]는 API Gateway가 있는 Compartment OCID로 대체합니다.*

```
<copy>
allow any-user to use functions-family in compartment [compartment-name] where all {request.principal.type='ApiGateway', request.resource.compartment.id='[compartment-id]'}
</copy>
```

예시
```
allow any-user to use functions-family in compartment oci-hol-xx where all {request.principal.type='ApiGateway', request.resource.compartment.id='ocid1.compartment.oc1..aaaaaaaaxxxxxxxxxxxxxxxxxxxxxxxxxxxoasgnfgbgs4jk2ltpgqnnna'}
```

## Task 5. API Gateway를 통한 호출 테스트

Expand Down Expand Up @@ -207,9 +207,8 @@ HTTP 기반 Web API(REST API)를 사용하는 경우, HTTP Body 전문외에 Req

1. Function 초기화후 만들어지는 handler 함수의 기본 파라미터를 보면, ctx, data 두 변수가 있습니다.

- data: Request Body가 들어있습니다
- ctx: Function의 Context 정보가 들어 있고, HTTP 요청의 경우, HTTP 관련 추가 데이터가 들어 있게 됩니다

- data: Request Body가 들어있습니다

```
# Ex) Python Function
Expand Down Expand Up @@ -514,4 +513,4 @@ HTTP 기반 Web API(REST API)를 사용하는 경우, HTTP Body 전문외에 Req
## Acknowledgements

* **Author** - DongHee Lee
* **Last Updated By/Date** - DongHee Lee, October 2023
* **Last Updated By/Date** - DongHee Lee, January 2024
Loading

0 comments on commit e769db9

Please sign in to comment.